2010-11-08 3 views
0

Supposons que nous ayons une chaîne de longueur définie, pouvant contenir des délimiteurs, utilisés uniquement pour une vue conviviale.Regexp d'une certaine longueur ignorant les caractères spécifiés

Exemple: Chaîne 9 chiffres, "123456789", qui pourrait être présenté comme "123456789" ou "123.456.789" ou "1-234-5-67-89" ou "123 456 789"

Ce dont j'ai besoin, c'est une expression rationnelle, qui pourrait compter la longueur en ignorant les délimiteurs. Quelque chose comme [\d|,\.\-\s]{9}, mais avec seulement \ d compter sur {9} (un nombre quelconque de caractères délimiteurs autorisés ... le cas échéant, des caractères délimiteurs ne doivent pas dépasser deux fois de suite)

+0

Vous n'utilisez pas "délimiteur", mais signifie "séparateur"? Ou es-tu? ** QUOTE **: * délimiteur *: Un "caractère" ou une "chaîne" qui définit des limites à un objet textuel de taille arbitraire, à ne pas confondre avec un "séparateur" ou un "terminateur". "Délimiter" signifie simplement "entourer" ou "entourer" (comme le font ces parenthèses). – tchrist

+0

Bien sûr, "séparateur". Désolé pour mon anglais :) – manuna

Répondre

4
^[-.,\s]*(?:\d[-.,\s]*){9}$ 

le cas échéant, des caractères délimiteurs shouldn « t dépasser deux consécutives:

^[-.,\s]{0,2}(?:\d[-.,\s]{0,2}){9}$ 
+0

Juste, après avoir posté la question, je suis arrivé à quelque chose de similaire, en partie comme: (\ d [\ -] {0,1}) {11,13} (dans mon cas^et $ sont pas nécessaire, car la recherche passe par un morceau de texte) Encore, je me demande, ce que "(?:)" l'utilisation ajoute à cette expression? Est-il généralement préférable de "()" au cas où nous n'aurions pas besoin de backreferences? – manuna

+0

@manuna: C'est vrai. – kennytm

0

au lieu de prendre la peine ma tête de trouver une expression régulière appropriée qui pourrait le faire, je voudrais utiliser un peu plus simples expressions régulières soit:

  • trouver tous les chiffres et vérifier le nombre de correspondances, ou
  • supprimer tous les non-chiffres et vérifier la longueur du reste.
Questions connexes