J'ai ce qui suit pour vérifier si le numéro de téléphone est au format suivant
(Xxx) xxx-xxxx. Le code ci-dessous retourne toujours vrai. Pas certain de pourquoi.
5 Réponses :
Ce n'est pas toujours em> match, mais il correspondra à n'importe quelle chaîne que contient em> trois chiffres, suivie d'un trait d'union, suivi de quatre chiffres supplémentaires. Cela correspondra également s'il y a quelque chose qui ressemble à un code régional sur le devant de cela. Donc, ceci est valide selon votre regex: pour valider que la chaîne contient un numéro de téléphone et rien d'autre em>, vous devez ajouter ancrages au début et à la fin de la regex: p>
Alan Moore a bien expliqué ce que votre expessure fait réellement. +1
Si vous souhaitez correspondre exactement "(xxx) xxx-xxxx" et absolument rien d'autre, ce que vous voulez est p>
La plainte générale concernant les modèles de regex pour les numéros de téléphone est qu'elles ont besoin d'une tâche de mettre dans les caractères en option em> en tant que tirets et autres éléments. Pourquoi ne peuvent-ils pas être facultatifs et avoir le motif pas se soucier em> s'ils sont là ou non? P>
blockQuote> Le modèle ci-dessous fait des tirets, des périodes et des parenthèses facultatif pour l'utilisateur et se concentre sur les numéros à la suite de captures nommées. P> Le motif est commenté (à l'aide du ce qui précède Schéma vient de rechercher 10 numéros et ignore les caractères de remplissage tels que un différentes variantes du même motif strong> p> modèle sans commentaires ne doivent plus utiliser
# CODE> et couvre plusieurs lignes) afin d'utiliser l'option REGEX ignorePatternwhiteespace code> à moins que l'on supprime les commentaires. Pour ce drapeau n'affecte pas le traitement des regex, il ne permet que de commenter le motif via le caractère # code> pause de caractères et de ligne. P> ( code> ou un tableau de bord - code> ou un espace ou un onglet ou même un . code>. . Les exemples sont p>
IgnorePatternnwhespace Code>: p> ^\(?(?<AreaCode>\d{3})[\).\s]?(?<Prefix>\d{3})[-\.\s](?<Suffix>\d{4})(?!\d)
Fermer, mais l'OP doit permettre à un espace après le ) code> après l'indicatif régional.
Gotcha rr. Puis changez le match mais ne capturez pas le) ou. à (?: [). \ s] *) # facultatif) ou. [Et espace]
Voici le code C # que j'utilise. Il est conçu pour obtenir tous les numéros de téléphone à partir d'une page de texte. Il fonctionne pour les patchs suivants: 0123456789, 012-345-6789, (012) -345-6789, (012) 3456789 012 3456789, 012 345 6789, 012 345-6789, (012) 345-6789, 012.345.6789 < Pré> xxx pré> p>
Que diriez-vous de ce type de téléphone no: +9412 345 67891
Yay ... génial! :)
Aucune des commentaires ci-dessus prend soin des numéros internationaux comme +33 6 87 17 00 11 (qui est un numéro de téléphone valide pour la France par exemple). Je le ferais dans une approche en deux étapes: 1. Supprimez tous les caractères qui ne sont pas des chiffres ou du caractère '+' 2. Vérifiez que le signe + est au début ou non. Longueur de contrôle (cela peut être très difficile car cela dépend des systèmes de numéro de pays locaux). Maintenant, si votre numéro commence avec +1 ou si vous êtes sûr que l'utilisateur est aux États-Unis, vous pouvez appliquer les commentaires ci-dessus. P>
Avez-vous essayé de commencer par une plus simple regex (par exemple une pour correspondre à 3 chiffres), puis la construire?
Dupliqué possible de Une regex complète pour la validation de numéro de téléphone
Quels numéros de téléphone sont-ils de retour pour où vous vous attendriez à renvoyer false? Savez-vous que
regex.match () code> ne nécessite pas la chaîne entière pour correspondre?@TIMPIETZCKER - TIM, que dois-je utiliser à la place du match pour vérifier la chaîne entière?