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.

-2voto

Ignorez tout sauf les chiffres.

Voici ce que j'utilise :

// USA phones should contain at least 10 digits. Most EU country codes have only 9 digits, without leading 0 and country code prefix, eg [+380] 88 888-88-88.
// UPD. India: +91(+10 digits), China: +86(+ 10 OR 11 digits), etc.

stringProto.isValidPhone = function(minDigitsCount, maxDigitsCount) { // please customize minDigitsCount!
    var str = this.trim();
    if (str) {
        var len,
            isPlus = ("+" === str[0]),
            defMin = isPlus ? 11 : 10, // 10 digits is standard w/o country code for the US, Canada and many other countries. (...and 10-digits number is DEFAULT! AK: DON'T CHANGE IT HERE!)
                                    // however, for countries like Ukraine all numbers without country code have only 9 digits length, or even 7, without regional code.
                                    // So please customize minDigitsCount accordingly to the length of numbers in your default country!

            defMax = isPlus ? 14 : 11; // 11 digits maximum w/o country code (China) or 14 with country code (Austria).

        if ((str = str.match(/\d/g)) && (str = str.join(""))) { // all digits only!
            len = str.length;

            return len >= (minDigitsCount || defMin) &&
                   len <= (maxDigitsCount || defMax);
        }
    }
}

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