J'essaie d'utiliser le modèle de gamme [01-12]
dans l'expression rationnelle pour faire correspondre les mm à deux chiffres, mais cela ne fonctionne pas comme prévu.
0|1-1|2
- cette notation est très trompeuse. Quelque chose comme 0|1|2
serait plus précis.
10 votes
Vous correspondez caractères no séquences de caractères . Fondamentalement, vous êtes en correspondance avec 0, 1 à 1 et 2 (c'est-à-dire 0, 1 et 2). Considérez ceci :
[a-z0-9]
ce qui correspond à toutes les lettres minuscules et à tous les chiffres, mais uniquement sous la forme d'un seul caractère.0 votes
Pour info, j'ai créé un outil javascript qui crée une regex hautement optimisée à partir de deux entrées (min/max). github.com/jonschlinkert/to-regex-range
0 votes
0[1-9]|1[0-2] -> 0|1|2 -> []s dans une regex dénotent une classe de caractères. Si aucune plage n'est spécifiée, la regex utilise implicitement tous les caractères.
0 votes
Avez-vous besoin de le faire correspondre avec une regex pure ? Si non, vous pouvez 1.) simplement utiliser la fonction
\d+
2.) convertissez les chaînes correspondantes en chiffres dans votre code, puis 3.) vérifiez la plage de chiffres comme suitif(num >= 0 && num <= 12){ /*do something*/ }
. C'est tellement plus rapide et flexible.