2010-11-27 6 views
0

je besoin d'une expression regualr qui accepte l'entrée suivanteRegex pour les jours xx, xx mois ou xx ans

1 jour

4 Jours

15 Jours

1 mois

12 mois

1 an

5 ans

Les numéros peuvent avoir n'importe quelle longueur. Des idées?

+0

dans quel but? Voulez-vous obtenir les chiffres? Voulez-vous appliquer un format d'entrée spécifique? Est-ce que la chaîne peut être combinée? Veuillez ajouter plus d'informations sur les entrées et sorties attendues. – Gordon

Répondre

5

Essayez ce,

^(1 (Day|Month|Year)|[1-9][0-9]* (Days|Months|Years))$ 

Il n'acceptera pas ce que je suppose est entrée invalide tel que "5 jours" et "04 mois"

Explication:

Soit l'entrée est "1 jour/mois/année", soit un chiffre compris entre 1 et 9 suivi d'un nombre quelconque de chiffres 0-9 suivi d'un espace et d'une des chaînes "Jours" "Mois" ou "Années"

+0

Solution élégante – Nigel

+0

04 Des mois peuvent être considérés comme valides par les personnes posant cette question, car les utilisateurs rencontrent tellement de mauvais validateurs qu'un zéro prédominant pourrait être attendu et qu'un utilisateur pourrait le supposer. – eyelidlessness

+0

Aucune ancre ou limite? – tchrist

2
\d+\s+(Day|Month|Year)(s)? 
  • \ d + au moins un chiffre
  • \ s + au moins un caractère d'espace
  • (Jour | Mois | Année) Jour ou mois ou année
  • (s)? le cas échéant pluralize l'unité
+0

Je mettrais un '\ b' de chaque côté de cela, à condition qu'un'^'et' $ 'ne soient pas ce qui est désiré. – tchrist

Questions connexes