Je construis une API javascript SCORM 2004 pour un système de gestion de l'apprentissage, et l'une des exigences de SCORM 2004 est que les intervalles de temps qui y sont passés doivent suivre le format suivant. Est-ce que quelqu'un sait ce que l'expression régulière de ce serait? J'essaie d'envelopper mon esprit, mais en vain. Note: P doit toujours être le premier caractère.SCORM 2004 Format de l'heure - Expression régulière?
P [yy] [mM] [dD] [T [hH] [nM] [S [S] .s]] où:
- y: Le nombre d'années (entier ,> = 0, et non restreint)
- m: le nombre de mois (entier,> = 0, et non restreint)
- d: Le nombre de jours (entier,> = 0, ne se limite pas)
- h : Le nombre d'heures (entier,> = 0, non restreint)
- n: Le nu mbre de minutes (entier,> = 0, non restreint)
- s: Le nombre de secondes ou fraction de secondes (réel ou entier,> = 0, pas restreint). Si des fractions de seconde sont utilisées, SCORM restreint davantage la chaîne à un maximum de 2 chiffres (par exemple, 34,45 - valide, 34,45454545 - non valide).
- Les indicateurs littéraux de caractère P, Y, M, D, T, H, M et S doivent apparaître si la valeur non nulle correspondante est présente.
- Le remplissage nul des valeurs doit être pris en charge. Zéro-remplissage ne modifie pas la valeur entière du nombre étant représenté par un ensemble de caractères. Pour l'exemple , PT05H est équivalent à PT5H et PT000005H.
Exemple -
- P1Y3M2DT3H indique une période de 1 an, 3 mois, 2 jours et 3 heures
- PT3H5M indique une période de temps de 3 heures et 5 minutes
Toute aide serait grandement appréciée.
Merci!
MISE À JOUR:
J'ai ajouté quelques normes supplémentaires qui doivent être conservés -
- Le désignateur P est présente
- Si la valeur des années, mois, jours, heures, minutes ou secondes est zéro, la valeur et la désignation littérale correspondante peuvent être omis, mais au moins un caractère r désignateur littéral et valeur sont présents en plus du désignateur P
- Le T désignateur est omise si tous les composants de temps (heures, minutes et secondes ) ne sont pas utilisés.Une valeur nulle peut être utilisé avec un quelconque des composants de temps (par exemple, PT0S)
J'adapté cela pour ColdFusion, et je l'ai trouvé ce que je pense est une erreur (au moins en CF) pour la partie "secondes". Je pense que la partie secondes devrait être (\ d + (?: \. \ D {1,2})? S | S)? – hairbo