web-dev-qa-db-fra.com

Regex pour correspondre à un nombre à 2 chiffres (pour valider le numéro d'émission de la carte de crédit / débit)

Je voudrais utiliser l'expression régulière pour correspondre à une chaîne d'exactement 2 caractères, et ces deux caractères doivent être compris entre 0 et 9. La chaîne à comparer proviendrait d'un champ de saisie de texte sur une seule ligne lorsqu'un ASP.NET MVC la vue est rendue

Jusqu'à présent, j'ai l'expression régulière

[0-9]{2}

et à partir de la liste suivante d'exemples d'entrées de chaîne

  • 456
  • 55 44
  • 12

les correspondances suivantes sont renvoyées lorsque j'applique l'expression régulière

  • 45
  • 55
    44
  • 12

Donc, j'ai en quelque sorte la moitié de la solution .... ce que je veux réellement appliquer, c'est que la chaîne est également exactement de 2 caractères, de sorte que dans la liste des chaînes, la seule qui devrait correspondre est

12

Je suis un amateur admis aux expressions régulières et je ne fais que l'utiliser pour valider un numéro de problème de carte sur un modèle ASP.NET MVC comme ci-dessous ....

[Required]
[RegularExpression("[0-9]{2}")]
public string IssueNumber { get; set; }

Je suis sûr que ce que je demande est assez simple, mais je n'ai pas pu trouver d'exemples qui ont limité la longueur dans le cadre de la correspondance.

Merci d'avance.

20
phil

Vous pouvez utiliser le début (^) et fin ($) des indicateurs de ligne:

^[0-9]{2}$

Certains langages ont également des fonctions qui vous permettent de faire correspondre une chaîne entière, où vous utilisiez une fonction find. Faire correspondre avec la chaîne entière fera fonctionner votre regex comme une alternative à ce qui précède. L'expression régulière ci-dessus fonctionnera également, mais le ^ et $ sera redondant.

45
Dukeling

Vous devez utiliser des ancres pour faire correspondre le début de la chaîne ^ et la fin de la chaîne $

^[0-9]{2}$
11
Jerry

Quelque chose comme ça fonctionnerait

/^\d{2}$/
3
Koushik Das