Duplicates possibles: strong>
une regex complète pour la validation de numéro de téléphone
Grep avec regex pour le numéro de téléphone P> blockQuote>Bonjour tout le monde, P>
Je suis nouveau à Stackoverflow et j'ai une question rapide. Supposons que nous avons reçu un grand nombre de fichiers HTML (grand comme dans théoritude infini). Comment puis-je utiliser des expressions régulières pour extraire la liste des numéros de téléphone de tous ces fichiers? P>
Explication / expression sera vraiment appréciée. Les numéros de téléphone peuvent être l'un des formats suivants: P>
- (123) 456 7899 LI>
- (123) .456.7899 LI>
- (123) -456-7899 LI>
- 123-456-7899 LI>
- 123 456 7899 LI>
- 1234567899 LI> ul>
Merci beaucoup pour toute votre aide et en avez une bonne! P>
4 Réponses :
devrait accomplir ce que vous essayez de faire. p>
La première partie Le Le espère que cela aide! p> / ^ [\ .-) (] * ([0-9] {3}) [\ .-) (] * ([0-9] {3}) [\ .-) ( ] * ([0-9] {4}) $ / code> p>
^ code> signifie le "début de la ligne" qui le forcera à rendre compte de la chaîne entière. P>
[\ .-) (] * code> que j'ai, il veut dire "toute période, un trait d'union, une parenthèse ou un espace apparaissant 0 ou plus". P>
([0-9] {3}) code> Les clusters correspondent à un groupe de 3 numéros (le dernier est défini sur 4) p>
. * code> est assez lourd. Vous allez probablement récupérer beaucoup de faux positifs.
Pas à moins que quelqu'un jette des chiffres supplémentaires.
@Web Qu'en est-il de la phrase "Je voulais 100 cases, mais le gars m'a donné 200 à la place et je devais payer 1000 $ pour eux!" De plus, car il s'agit de HTML, vous pouvez obtenir des trucs comme
@Michael Mroezzek - OK, je l'ai réparé pour être plus précis
@WebDestroya: Merci pour la réponse, mais ne pensez-vous pas que cette mise en œuvre entraînera également la mauvaise syntaxe suivante :) 123).) 456) .9999?
@Rocky - Je suppose que vous devrez l'adapter à quelles conditions vous attendez, mais oui, cela fonctionnerait à ce sujet.
@WebDestroya: parfait! Merci.
Actuellement, la réponse est défectueuse. Regex traite les caractères non évalués par code> comme gammes et lancers
Plage non valide dans la classe de caractères code> erreur.
Cela vous aidera à attraper ceux avec un code régional entre parenthèses les autres sont les suivants: p> J'ai séparé le premier un et le second parce que les mettre ensemble sans retour en arrière pourrait vous engager d'accepter Notez aussi que sur Mon terminal utilisant (123 456 7890 code> ou
123) 456 7890 code> p>
grep code>, je devais échapper au
{} code> pour la répétition. Vous ne pouvez pas avoir à ne pas avoir à vous échapper, ou vous devrez peut-être échapper à d'autres personnages en fonction de l'endroit où vous avez l'intention d'utiliser cela. P> P>
Cela devrait correspondre à tous sauf le dernier modèle.
Pour le dernier, vous pouvez utiliser un motif séparé Et il y a une erreur, il correspondra à même que 2 p> li>
Depuis que vous souhaitez extraire d'une page HTML, vous devez ignorer Vous pouvez Test Regex ici P> ^ (\ (? \ d {3} \)?) ([.-]) (\ D {3}) ([.-]) (\ d {4}) $ code > p>
^ \ d {10} $ code> p>
(123 456 7899 code> p>
^ (\ (\ \ d {3} \)?) code>, si nous cassons ce code, le premier caractère (
^ code>) correspond au début. du texte.
\ (? code> et
\ \)? code> acceptera ou non ce caractère, il y a le problème à faire de cela que vous devez vérifier s'il y avait un caractère d'ouverture, s'il y avait le Deuxièmement, je ne sais pas si cela est possible avec regex uniquement. Et
\ d {3} code> correspondra à trois numéros p> li>
([.-]) code> correspondra à ceux de ceux-ci, mais une seule et unique une fois. p> li>
(\ d {3}) code> correspondra à trois numéros p> li>
(\ d {4}) $ code> Quatre numéros suivis de la fin du texte (
$ code>) p> li>
ol>
^ code> et
$ code> pour correspondre à n'importe quelle partie du texte et définir un drapeau
global < / code>, dans javascript / exp /
g code> p>
Sans savoir quelle langue que vous utilisez, je suis incertain que la syntaxe est correcte ou non.
Ceci devrait correspondre à tous vos groupes avec très peu de faux positifs: P>
/\(([0-9]{3})\)([ .-]?)([0-9]{3})\2([0-9]{4})|([0-9]{3})([ .-]?)([0-9]{3})\5([0-9]{4})/
Merci à tous pour la réponse et désolé pour la gêne occasionnée par la répétition de cette question déjà existante qui aurait pu vous causer.
Peut-il y avoir une autre chaîne de chiffres dans le code qui n'est pas un numéro de téléphone mais dites une chaîne de 11 chiffres?
Ne pense pas que c'est un dup mais assez proche.
Qu'en est-il des extensions de téléphone? ###-###-#### X####
Qu'en est-il des chiffres non américains, voire: + 1-xxx-xxx-xxxx ou 001-xxx-xxx-xxxx?
Qu'est-ce que c'est avec des numéros de téléphone correspondants avec des expressions régulières? Toutes les vingt minutes, quelqu'un demande une certaine variation de cette question