Expressions régulières·une durée ISO

une durée ISO

Correspond à une durée ISO. Il est ancré aux deux bouts : la chaîne entière doit correspondre. Il n’y a pas de groupe capturant.

Motif
/^P(?=\d|T\d)(?:\d+Y)?(?:\d+M)?(?:\d+D)?(?:T(?:\d+H)?(?:\d+M)?(?:\d+S)?)?$/
Portée
la chaîne entière
Groupes capturants
0
Ce qu’il capture dans le premier exemple
P1Y2M3D

Essayez

Tapez un texte : les parties capturées sont surlignées. Tout se passe dans votre navigateur, rien n’est envoyé.

P1Y2M3D

1 correspondance

Exemples qui correspondent

  • P1Y2M3D
  • PT30M

Exemples qui ne correspondent pas

  • 1Y
  • P
  • PT

Autres expressions du groupe

Comment lire

  • Avec ^ et $, la chaîne entière doit correspondre ; sans eux, le motif peut se trouver n’importe où. Ancrez toujours ce qui sert à valider.
  • Les parenthèses ( ) capturent ce qu’elles entourent. Pour seulement grouper, écrivez (?: ) afin que la numérotation ne se décale pas.
  • Chaque expression ici est confrontée à ses exemples. Cela dit, « ressemble à un e-mail » et « est une vraie boîte » sont deux choses.
  • Les répétitions ouvertes imbriquées comme (a+)+ peuvent exploser sur certaines entrées. Repérez cette forme avant de coller l’expression d’autrui.

Questions fréquentes

Q. Quelle est la regex pour une durée ISO ?

^P(?=\d|T\d)(?:\d+Y)?(?:\d+M)?(?:\d+D)?(?:T(?:\d+H)?(?:\d+M)?(?:\d+S)?)?$.

Q. Quelles chaînes correspondent ?

Un texte comme P1Y2M3D correspond ; un texte comme 1Y non.

Q. La chaîne entière doit-elle correspondre ?

Oui. Elle est encadrée par ^ et $ : seule une correspondance complète passe.

Q. Comment utiliser ce qui est capturé ?

Il n’y a pas de groupe capturant : seule la correspondance entière (match[0]) revient. Mettez entre parenthèses la partie voulue.