Valider votre numéro de téléphone avec JavaScript
J'ai trouvé ce code dans un site web, et il fonctionne parfaitement. Il vérifie que le numéro de téléphone est dans un de ces formats:
(123) 456-7890 ou 123-456-7890
Le problème est que mon client (je ne sais pas pourquoi, peut-être du client fourre) veut ajouter un autre format, les dix numéros consécutifs, quelque chose comme ceci: 1234567890.
Je suis en utilisant cette expression régulière,
/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/
Comment puis-je ajouter qu'il valide aussi la un autre format? Je ne suis pas bon avec les expressions régulières.
- double possible de Une regex complète pour le numéro de téléphone de validation
- Comme une règle du pouce pour tenter de valider les numéros de téléphone est vouée à l'échec. Qu'est-ce avec des structures différentes dans les différents pays et les extensions, c'est un problème très difficile.
- Et ce que les français notation? "12 34 56 78 90" il suffit de retirer tout sauf des numéros (sauf peut-être un signe plus au début) et vérifiez la longueur.
- Vous ne devriez pas, en fait, utiliser des expressions régulières pour valider les numéros de téléphone correctement.
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, le format de votre valideur est évidemment seulement approprié pour PNNA (indicatif de pays +1) nombres. Sera votre application utilisée par quelqu'un avec un numéro de téléphone à partir de l'extérieur de l'Amérique du Nord? Si donc, vous ne voulez pas empêcher ces personnes d'entrer dans un parfaitement valide [international] nombre.
Deuxièmement, votre validation est incorrect. PNNA les numéros prennent la forme
NXX NXX XXXX
oùN
est un chiffre de 2 à 9 etX
est un chiffre de 0 à 9. En outre, les codes et les échanges ne peuvent pas prendre la formeN11
(à la fin avec les deux) pour éviter la confusion avec les services spéciaux sauf numéros non géographiques de la zone de code (800, 888, 877, 866, 855, 900) peut avoir unN11
échange.Donc, votre regex va passer le nombre (123) 123 4566 même si ce n'est pas un numéro de téléphone valide. Vous pouvez corriger cela en remplaçant
\d{3}
avec[2-9]{1}\d{2}
.Enfin, j'ai le sentiment que vous êtes à la validation de la saisie de l'utilisateur dans un navigateur web. Rappelez-vous que la validation côté client est seulement un pratique que vous fournissez à l'utilisateur; vous avez encore besoin de valider la saisie de tous (encore une fois) sur le serveur.
TL;DR ne pas utiliser une expression régulière pour valider complexes du monde réel, des données comme les numéros de téléphone ou Url. Utiliser un bibliothèque spécialisée.
Ma regex de choix est:
Formats valides:
(123) 456-7890
(123)456-7890
123-456-7890
123.456.7890
1234567890
+31636363634
075-63546725
m
effectue multi-ligne recherche^
au début et à la$
la fin, on peut trouver les numéros de téléphone au moyen de cordes aussiSi vous êtes à la recherche pour le 10 et seulement à 10 chiffres, ignorent tout, mais les chiffres-
return (value.match(/\d/g) || []).length == 10
ou le plus simple (mais tout aussi imparfait):return value.replace(/\D/g,'').length == 10
./\D/gi.test(value)
. Tout ce qui n'est pas un chiffre, y compris les espaces, tirets, etc...Ce que je voudrais faire est de les ignorer, le format et valider les contenus numériques:
La REGEX suivante permettra de valider l'un de ces formats:
(123) 456-7890
123-456-7890
123.456.7890
1234567890
.
ou bien il va correspondre à un caractère arbitraire, de casser votre regex.C'est très une option lâche et je préfère garder de cette façon, je vais surtout l'utiliser dans les formulaires d'inscription, où les utilisateurs doivent ajouter leur numéro de téléphone.
Habituellement, les utilisateurs ont de la difficulté avec les formulaires d'appliquer strictement les règles de formatage, je préfère l'utilisateur à saisir le nombre et le format à l'écran ou à l'avant de l'enregistrer dans la base de données.
http://regexr.com/3c53v
+41 (79) 123 45 67
(Suisse):/^[+]?[\s./0-9]*[(]?[0-9]{1,4}[)]?[-\s./0-9]*$/g
Je vous suggérons d'utiliser quelque chose de plus clair (surtout en pensant à qui le code)... que dire de:
où la regexp est construit à partir d'un clair de modèle ? L'ajout d'un nouveau serait alors une évidence et peut-être même le client lui-même pourrait être en mesure de le faire en une page "options".
Où str pourrait être l'un de ces formarts:
555-555-5555
(555)555-5555
(555) 555-5555
555 555 5555
5555555555
1 555 555 5555
JS:
Cela fonctionne:
La
?
caractère signifie que le groupe précédent doivent être fixées à zéro ou une fois. Le groupe(-|\s)
va correspondre à un-
ou un|
caractère. L'ajout de?
après la deuxième occurrence de ce groupe dans votre regex permet de faire correspondre une séquence de 10 chiffres consécutifs.Essayer ce qu'il comprend une validation internationale des formats trop.
/^[+]?(1\-|1\s|1|\d{3}\-|\d{3}\s|)?((\(\d{3}\))|\d{3})(\-|\s)?(\d{3})(\-|\s)?(\d{4})$/g
Cette expression valide le format suivant:
Tous les réponses sont grands, mais ici, c'est que je pense c'est un peu plus complet...
Ce qui est écrit pour javascript match utilisation d'un seul numéro en une seule ligne:
Si vous voulez correspondre aux limites des mots, il suffit de changer le ^ et le $ à \b
Je souhaite la bienvenue à toutes les suggestions, des corrections, ou des critiques de cette solution. Aussi loin que je peux dire, correspond à la PNNA format (pour les etats-unis numéros - je n'ai pas de valider d'autres pays d'Amérique du Nord lors de la création de ce), qui évite tout 911 erreurs (ne peut pas être dans la zone de code ou le code de région), élimine seulement ceux 555 numéros qui sont en fait des invalides (code de région 555 suivi par 0.1.xx où x = n'importe quel nombre).
/^\+?1?\s*?\(?\d{3}(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$/
Bien que ce post est vieux, mais l'intention de quitter mon contribuition.
ceux-ci sont acceptés:
5555555555
555-555-5555
(555)555-5555
1(555)555-5555
1 555 555 5555
1 555-555-5555
1 (555) 555-5555
ne sont pas acceptés:
555-5555 -> d'accepter cette utilisation:
^\+?1?\s*?\(?(\d{3})?(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$
5555555 -> d'accepter cette utilisation:
^\+?1?\s*?\(?(\d{3})?(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$
1 555)555-5555
123**&!!asdf#
55555555
(6505552368)
2 (757) 622-7382
0 (757) 622-7382
-1 (757) 622-7382
2 757 622-7382
10 (757) 622-7382
27576227382
(275)76227382
2(757)6227382
2(757)622-7382
(555)5(55?)-5555
c'est le code que j'ai utilisé:
vraiment simple
/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/
La
?
caractère signifie que le groupe précédent doivent être fixées à zéro ou une fois. Le groupe(-|\s)
va correspondre à un-
ou un|
caractère.Je suis d'accord, la validation des numéros de téléphone est une tâche difficile.
Comme pour ce problème spécifique, je voudrais modifier la regex de
à
comme le seul élément de plus qui devient inutile est le dernier dash/espace.
Si vous utilisez sur les balises d'entrée que ce code va vous aider. J'écris ce code par moi-même et je pense que c'est une très bonne façon de l'utiliser en entrée. mais vous pouvez le modifier à l'aide de votre format. Il va aider l'utilisateur à corriger leur format sur la balise input.
Voulais juste ajouter une solution spécifiquement pour la sélection de la non-locales des numéros de téléphone(800 et 900 espèces).
Google a une bonne bibliothèque pour la manipulation des numéros de téléphone en Javascript: https://github.com/googlei18n/libphonenumber. Fonctionne aussi avec Java et C++.
Je préfère utiliser, car celui-ci doit être vraiment bien testé en production. Donc, cela devrait être tout à fait sûr de relais.
Cette fonction a travaillé pour nous bien:
JS:
Cela permettra de valider n'importe quel numéro de téléphone de format variable:
\\(?\d{3}\\)?
trouve à 3 chiffres à l'délimitée par des parenthèses ou pas.([\-\s\.])?
trouve l'un de ces caractères de séparation ou de ne pas\d{3}
trouve à 3 chiffres à l'\1
utilise la première appariés séparateur - ce qui garantit que les séparateurs sont les mêmes. Donc (000) 999-5555 ne validera pas ici car il y a un espace et le tiret séparateur, il suffit donc de retirer le "\1" et le remplacer par le séparateur de sous-modèle (cela permettra également de valider les formats non standard). Vous devez cependant être de format les conseils de la saisie de l'utilisateur de toute façon.\d{4}
trouve à 4 chiffresValide:
BTW c'est pour JavaScript donc à double échappe.
Ce reg ex est adapté pour les numéros de téléphone internationaux et plusieurs formats de cellule mobile numéros.
Ici est l'expression régulière:
/^(+{1}\d{2,3}\s?[(]{1}\d{1,3}[)]{1}\s?\d+|+\d{2,3}\s{1}\d+|\d+){1}[\s|-]?\d+([\s|-]?\d+){1,2}$/
Voici la fonction JavaScript
Cela valide les formats suivants:
+44 07988-825 465 (avec n'importe quelle combinaison de traits d'union à la place de l'espace, sauf que seul un espace doit suivre le +44)
+44 (0) 7988-825 465 (avec n'importe quelle combinaison de traits d'union à la place des espaces, sauf que pas de trait d'union peut exister directement avant ou après l' (0) et l'espace avant ou après le (0) ne doit pas exister)
123 456-789 0123 (avec n'importe quelle combinaison de traits d'union à la place des espaces)
123-123 123 (avec n'importe quelle combinaison de traits d'union à la place des espaces)
123 123456 (Espace peut être remplacé par un trait d'union)
1234567890
Pas les espaces doubles ou doubles tirets peuvent exister pour tous les formats.
Expression Régulière Simple:
/\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g
Vérifier le format, espérons que cela fonctionne :
444-555-1234
f:246.555.8888
m:1235554567
Il y a trop de regex variantes pour valider un numéro de téléphone. Je recommande cet article: JavaScript: Formulaire HTML - Numéro de Téléphone validation, où de multiples variantes sont indiquées pour chaque cas. Si vous voulez approfondir dans regex pour une expression personnalisée, vous pouvez consulter ce la documentation.
Essayer cette fonction js.
Retourne true si elle correspond, et false si elle échoue
Ref
JS:
essayer cette
formats valides:
Valider votre numéro de téléphone avec un indien standard, comme démarrer avec seulement 6,7,8 ou 9 et le total des chiffres doit être de 10
La solution est testé et de travail