-2
votes

Limiter des pièces et total de nombres dans une chaîne (regex)

J'essaie d'utiliser Regex pour trouver des numéros d'impôt avec les formats:

  • nnn-nnn-nnn | NN-NNN-NNN
  • nnn nnn nnn | NN NNN NNN
  • nnnnnnnnn | nnnnnnnn

    Edit: Certains échantillons sont 062-225-505, 62-225-505, 062 225 505, 62 225 505, 062225502, 62225505 . Les chiffres ne doivent pas dépasser 9 chiffres au total

    jusqu'à présent, j'ai (0-9] {2,3} (\ s | - |) + [0-9] {3,8} (\ s | - |) + [0-9] { 3,9})

    Cela fonctionne, mais il trouve également 050821862257111 qui est trop long pour ce que j'essaie de trouver. Comment puis-je limiter la chaîne totale ainsi que chaque partie étant limitée?

    merci!


2 commentaires

Veuillez inclure des données d'échantillonnage réelles couvrant tous les différents formats d'ID de taxe.


Merci! Certains échantillons sont 062-225-505, 62-225-505, 062 225 505, 062225502, 62225505. Les chiffres ne doivent pas dépasser 9 chiffres au total


4 Réponses :


0
votes

Avec une petite modification de votre regex, vous pouvez limiter la longueur à huit ou neuf chiffres, bien que cela permettrait toujours un mélange et une correspondance des délimiteurs: xxx

si le nombre réel des délimiteurs n'est pas important, vous pourriez simplement supprimer, puis vérifier la longueur des numéros restants.


0 commentaires

1
votes

Essayez ^ \ d {1,9} (?: (?: - - |) \ d {1,9}) * $

Explication:

^ - correspondre au début d'une chaîne

\ d {1,9} - correspond entre 1 et 9 chiffres

(?: ...) - groupe non captuirng

- | - altérant: correspondez ou -

* - correspond à zéro ou plusieurs fois

$ - correspond à la fin d'une chaîne

Démo


0 commentaires

0
votes
^\d{2}\d?(?:-|\s)?\d{3}(?:-| )?\d{3}$
demo at regex101This regex will only match if the spaces and dashes are in the right place. This will match: 062-225-505This will not match: 062-2255-05 or 062225--505

0 commentaires

0
votes

trouvé avec une combinaison de toute votre aide! :)

\ s \ d {2,3} \ d? (- | \ s)? \ d {3} (\ 1)? \ d {3} (?! \ D)

trouvé 62-225-505, 62225505, 062 225 505, et n'a pas trouvé 060821067254101

Merci tout :)


0 commentaires