2009-12-26 4 views
10

Je cherche une expression rationnelle simple qui validera un numéro de téléphone de 10 chiffres. Je voudrais m'assurer que le nombre est exactement 10 chiffres, pas de lettres, tirets ou parens et que les deux premiers chiffres ne commencent pas par 0 ou 1. Quelqu'un peut-il aider?Validation pour un numéro de téléphone à 10 chiffres

+0

FYI - Bon site regex: http://www.regular-expressions.info/ –

+0

Merci pour le lien. Bookmarked! Cela m'aidera pour l'avenir. – jon

+2

Cela n'a donc rien à voir avec le plan de numérotation nord-américain, qui admet certainement 0 et 1 comme deuxième chiffre. Dans quelle région du monde regardez-vous? –

Répondre

19

/[9/2] {2} \ d {8}/

+0

Merci Mopoke. Cela fonctionne bien aussi. :) – jon

+1

Je dois vraiment apprendre quelques regex parce que je l'utilise plus maintenant que jamais auparavant. – jon

+0

Quand on se dit qu'on devrait commencer à en savoir plus sur les expressions rationnelles, il faut immédiatement prendre du recul et reconsidérer ... –

9
^[2-9]{2}[0-9]{8}$ 

Je considère [0-9] pour mieux lire que \ d, surtout compte tenu de ce qui précède [9/2 Les caractères^et $ garantissent que la chaîne d'entrée est constituée de SEULEMENT de ces 8 caractères - sinon, la chaîne d'entrée n'est pas garantie - "12345678901" correspondrait à la regex sans ces deux caractères - bien que c'est 11 caractères et commence par 1!

0

Ce script regex peut être utile. Je supprime essentiellement tous les caractères de "ponctuation", y compris un 1- premier, puis valide il est de 10 chiffres.

La partie supplémentaire que vous n'avez pas besoin probablement est la mise en forme 000-000-0000

formatPhone = function() { 
var phone = this.value; 
phone = phone.replace(/^1(|-|\(|\)|\.|)*|-|\(|\)|\.| /g, ''); 
if(phone.length === 10) { 
    this.value = phone.slice(0,3) + '-' + phone.slice(3,6) + '-' + phone.slice(6,10); 
} 
} 
2

Comme Randal a souligné, cette question ne correspond pas avec les numéros de téléphone ainsi sont formatés en Amérique du Nord (même si le PO a déclaré «les deux premiers chiffres ne commencent pas par 0 ou 1»). Une meilleure regex pour les numéros de téléphone en Amérique du Nord serait:

^[2-9] {1} [0-9] {9} $

Par exemple, le code régional de Washington DC est (202). NYC a pour indicatif régional (212). Le nord du New Jersey a (201).

Mais plus précisément, le PNNA a beaucoup de règles en ce qui concerne ce qui est autorisé dans l'indicatif régional et l'échange (les six premiers chiffres). Cette expression régulière devrait toujours couvrir la plupart des cas. https://en.wikipedia.org/wiki/North_American_Numbering_Plan

+0

Où a-t-il dit que c'est pour l'Amérique? – Gui13

0

Les numéros de téléphone seront de 10 chiffres, et il va commencer à partir de 7,8 et 9

[RegularExpression ("^ ([07] [0-9] [0-9] [0- 9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] | 8 [0-9] [0-9] [0-9] [ 0-9] [0-9] [0-9] [0-9] [0-9] [0-9] | 9 [0-9] [0-9] [0-9] [0-9 ] [0-9] [0-9] [0-9] [0-9] [0-9]) $ », ErrorMessage = "Entrez votre numéro de mobile valide")]

référence: http://www.regular-expressions.info/numericranges.html

Questions connexes