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.

33voto

Billbad Points 2930

Le REGEX suivant validera n'importe lequel de ces formats :

(123) 456-7890
123-456-7890
123.456.7890
1234567890

/^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/

24voto

Frawel Points 171

Où str peut être n'importe lequel de ces formarts : 555-555-5555 (555)555-5555 (555) 555-5555 555 555 5555 5555555555 1 555 555 5555

function telephoneCheck(str) {
  var isphone = /^(1\s|1|)?((\(\d{3}\))|\d{3})(\-|\s)?(\d{3})(\-|\s)?(\d{4})$/.test(str);
  alert(isphone);
}
telephoneCheck("1 555 555 5555");

20voto

6502 Points 42700

Je suggérerais d'utiliser quelque chose de plus clair (surtout en pensant à ceux qui devront maintenir le code)... que dire de... :

var formats = "(999)999-9999|999-999-9999|9999999999";
var r = RegExp("^(" +
               formats
                 .replace(/([\(\)])/g, "\\$1")
                 .replace(/9/g,"\\d") +
               ")$");

où l'expression rationnelle est construite à partir d'un modèle clair ? L'ajout d'un nouveau modèle ne poserait alors aucun problème et le client pourrait même être en mesure de le faire dans une page "options".

11voto

harinimurugan Points 103

Essayez celui-ci - il inclut également la validation des formats internationaux.

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

Cette expression rationnelle valide le format suivant :

  • (541) 754-3010 Domestique
  • +1-541-754-3010 International
  • 1-541-754-3010 Composé aux Etats-Unis
  • 001-541-754-3010 Composé depuis l'Allemagne
  • 191 541 754 3010 Composé depuis la France

9voto


Regex

Utilisez le modèle Regex suivant :

/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im

Comme ceci : <input pattern="/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im"> *


Formats valables :

(123) 456-7890,
(123)456-7890,
123-456-7890,
123.456.7890,
1234567890,
+31636363634 ou
075-63546725


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