2 votes

C# ISO 8601 Validation de l'intervalle de temps

J'ai cherché pendant un certain temps et je n'ai rien trouvé qui soit en rapport avec ce sujet.

Je dois valider un intervalle de temps ISO 8601. Il y a beaucoup de choses sur la date et l'heure ISO 8601, mais j'ai spécifiquement besoin d'un intervalle. J'utilise une expression rationnelle et voici ce que j'ai obtenu jusqu'à présent ;

Regex regEx = nouvelle Regex(@ "^P((( \d +)Y)(( \d +)M)(( \d +)D)(T)(( \d +)H)(( \d +)M)(( \d +((.) ?( \d ) ?( \d ) ?))S)$") ;

En gros, cela vérifie si la chaîne d'entrée est entièrement formée. Par exemple, P0Y0M1DT1H2M2.01S serait validé, mais la norme stipule que les chaînes plus petites, telles que PT4S, devraient également être acceptées.

Si quelqu'un peut m'aider à ce sujet, j'apprécierais beaucoup. J'ai lu des articles sur les expressions rationnelles conditionnelles, mais je ne sais pas trop comment les utiliser.

Merci beaucoup.

1voto

Gustavo Pérez Points 11

J'ai créé une expression régulière pour obtenir des informations sur l'intervalle dans la norme ISO 8601. Jetez-y un coup d'oeil :

^(P((?<Years>\d+)Y)?((?<Months>\d+)M)?((?<Days>\d+)D)?)(T((?<Hours>\d+)H)?((?<Minutes>\d+)M)?((?<Seconds>\d+((.)?(\d)?(\d)?))S)?)$

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X