227 votes

Valider un numéro de téléphone avec JavaScript

J'ai trouvé ce code sur un site web, et il fonctionne parfaitement. Il valide que le numéro de téléphone est dans l'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 des trucs de client) veut ajouter un autre format, les dix numéros consécutifs, quelque chose comme ça : 1234567890 .

J'utilise cette expression régulière,

/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/

Comment puis-je ajouter qu'il valide également l'autre format ? Je ne suis pas doué pour les expressions régulières.

8voto

Donut Points 32892

Cela fonctionnera :

/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/

Les ? signifie que le groupe précédent doit être comparé zéro ou une fois. Le groupe (-|\s) correspondra soit à un - ou un | caractère. Ajout ? après la deuxième occurrence de ce groupe dans votre expression rationnelle vous permet de faire correspondre une séquence de 10 chiffres consécutifs.

8voto

essayez ceci

/^(\\+{0,})(\\d{0,})(\[(\]{1}\\d{1,3}\[)\]{0,}){0,}(\\s?\\d+|\\+\\d{2,3}\\s{1}\\d+|\\d+){1}\[\\s|-\]?\\d+(\[\\s|-\]?\\d+){1,2}(\\s){0,}$/gm

formats valables

  • (123) 456-7890
  • (123)456-7890
  • 123-456-7890
  • 1234567890
  • +31636363634
  • +3(123) 123-12-12
  • +3(123)123-12-12
  • +3(123)1231212
  • +3(123) 12312123
  • +3(123) 123 12 12
  • 075-63546725
  • +7910 120 54 54
  • 910 120 54 54
  • 8 999 999 99 99

https://regex101.com/r/QXAhGV/1

7voto

Nikita Shahov Points 241

Un moyen très simple :

"9001234567".match(/^\d{10}$/g)

6voto

Flavio Ferreira Points 91

/^\+?1?\s*?\(?\d{3}(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$/

Bien que cet article soit ancien, je tiens à apporter ma contribution. Celles-ci sont acceptées : 5555555555 555-555-5555 (555)555-5555 1(555)555-5555 1 555 555 5555 1 555-555-5555 1 (555) 555-5555

ils ne sont pas acceptés :

555-5555 -> pour accepter cette utilisation : ^\+?1?\s*?\(?(\d{3})?(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$

5555555 -> pour 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

Voici le code que j'ai utilisé :

function telephoneCheck(str) {
  var patt = new RegExp(/^\+?1?\s*?\(?\d{3}(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$/);
  return patt.test(str);
}

telephoneCheck("+1 555-555-5555");

5voto

g1smd Points 81

Analyseur Javascript de numéros de téléphone avec métadonnées pour plus de 200 pays : http://code.google.com/p/libphonenumber/source/browse/#svn%2Ftrunk%2Fjavascript

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X