7
votes

Regex pour permettre des chiffres et un seul trait d'union au milieu

J'essaie d'écrire une expression régulière pour autoriser des chiffres et un seul hypancien au milieu (ne peut pas être au début ou à la fin) dire motif: 02-04 , 02 est acceptable mais Modèle: - ou - ou -02 ou 04 - ou 02-04-06 < / code> sont inacceptables

J'ai essayé quelque chose comme ça, mais cela permettrait - au début et permettrait également plusieurs - xxx

Je ne suis pas si bon avec regex Peu d'explications seraient réelles utiles.

EDIT: Désolé de vous inscrire à nouveau, mais j'ai besoin que les chiffres ne soient de 23 à 2 chiffres (123-346) doivent être considérés comme invalides.


0 commentaires

3 Réponses :


5
votes

Assez facile: xxx

au moins un ( + ) chiffre ( \ d ), suivi d'un groupe optionnel contenant un groupe Hyphen-Minus ( - ), suivi d'au moins un chiffre à nouveau.


2 commentaires

mais cela rendrait valide 02 non valide, car un trait d'union est requis par votre expression


Ah désolé; négligé la partie qui a déclaré que le trait d'union-minus est facultatif. Corrigé maintenant. Cette exigence est un peu difficile à voir dans la question, certes, comme chaque explication verbale du motif ressemble à un trait d'union-minus est requise.



14
votes

Essayez celui-ci:

/^\d{1,2}(-\d{1,2})?$/


6 commentaires

Même réponse que la mienne, mais vous m'avez battu. J'ai donc ajouté une explication, avancé et supprimé le mien.


Merci pour l'explication @slim, j'ai besoin de ça


Désolé de vous déranger à nouveau avec cela, mais j'ai besoin que les chiffres ne soient que 2 chiffres (123-346) doivent être considérés comme invalides.


2 chiffres exactement? Ou 1-2 chiffres? \ d [2] ou \ d \ d correspond à deux chiffres. \ d [1-2] ou \ d \ d? correspond à 1 ou 2 chiffres.


J'ai mis à jour le non-inscrit pour que cela ne prend en charge que un ou deux chiffres ({1,2} au lieu de +) (et merci @slim)


@Yasmat et vous avez repéré mon [] vs {} échouez :)



2
votes

Pour les cordes contenant uniquement ce modèle, les éléments suivants doivent fonctionner xxx

un groupe de 2 chiffres suivi de la fin moins avec un groupe de 2 chiffres sans moins.


0 commentaires