0
votes

Existe-t-il un moyen d'exclure les numéros à 3 chiffres se terminant en utilisant des expressions régulières?

J'essaie de valider Codes de zone de numéro de téléphone forts> (Amérique du Nord) Vérifiez que le nombre ne commence pas avec un ou un zéro. En outre, le nombre ne devrait pas inclure des numéros réservés tels que ceux-ci (c'est-à-dire à l'exclusion de tout ce qui se termine en 11).

  • Ce serait des codes de surface valides: 414, 608, 920, 319, 715 LI>
  • Ceux-ci ne seraient pas valides: 023, 123, 411, 611, 811, 911 Li> ul>

    J'ai essayé plusieurs choses, mais toujours pas de chance. Je ne suis pas très bon chez Regex. Voici mon dernier essai P>

    \b([2-9](?!11)|[2-9][0-9]{2})\b
    


4 commentaires

Il y a beaucoup de texte expliquant ce qui est requis. Vous pouvez obtenir plus de réponses si vous postez une liste de styles de nombres pour correspondre, puis une liste qui ne doit pas correspondre. Même si ce n'est pas parfait, vous pouvez voir comment ils l'ont contacté et modifier la regex vous-même ou mettre à jour la question pour couvrir les nouveaux faux positifs découverts.


Merci j'ai fait beaucoup plus que les exemples.


Brut première tentative Regex101.com/r/p6q79h/1 qui correspond à 414, 608, 920, 319, 715 et ne correspond pas 023, 123, 411, 611, 611, 811, 911


Op pouvez-vous indiquer quelle saveur (outil / bibliothèque) de regex avec laquelle vous travaillez?


3 Réponses :


2
votes

Votre tentative est très proche, vous n'avez pas besoin de l'expression "non plus" dans votre condition correspondante, juste un lookahead négatif, qui arrêtera le match s'il voit la chaîne. Voici un exemple de fegex de travail: xxx

Vous pouvez l'essayer Ici


0 commentaires

1
votes

solution sans lookaheads négatifs: xxx


0 commentaires

1
votes

Cela devrait fonctionner comme requis, y compris les 0 et 1 CAVEZE.

123 invalid
001 invalid
212 valid
321 valid
449 valid
811 invalid
121 invalid
111 invalid
911 invalid
099 invalid


0 commentaires