2009-12-26 458 views
10

Estoy buscando una expresión regular simple que valide un número de teléfono de 10 dígitos. Me gustaría asegurarme de que el número sea exactamente de 10 dígitos, sin letras, guiones o paréntesis, y que los primeros dos dígitos no comiencen con 0 o 1. ¿Alguien puede ayudar?Validación para un número de teléfono de 10 dígitos

+0

FYI - Buen sitio de expresiones regulares: http://www.regular-expressions.info/ –

+0

Gracias por el enlace. ¡Marcado como favorito! Me ayudará para el futuro. – jon

+2

Esto no tiene nada que ver con el Plan de numeración de América del Norte, que ciertamente permite 0 y 1 como segundo dígito. ¿Qué área del mundo estás mirando? –

Respuesta

19

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

+0

Gracias Mopoke. Eso funciona bien también. :) – jon

+1

Realmente tengo que aprender algo de expresiones regulares porque lo estoy usando ahora más que nunca. – jon

+0

Cuando uno se dice a sí mismo que uno debería comenzar a aprender más sobre expresiones regulares, uno debería dar un paso atrás inmediatamente y reconsiderar ... –

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

considero [0-9] para ser mejor leer que \ D, especialmente teniendo en cuenta lo anterior [2-9 ]

Los^y $ aseguran que la cadena de entrada consiste SOLAMENTE en esos 8 caracteres; de lo contrario no se garantiza que la cadena de entrada no sea más grande, es decir, "12345678901" coincidiría con la expresión regular sin esos dos caracteres. ¡son 11 caracteres y comienza con 1!

0

Este script regex puede ser de ayuda. Básicamente borro cualquier carácter de "puntuación", incluido un 1 principal, luego valida que tiene 10 dígitos.

La parte extra que no necesita probablemente es el formato a 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

Como Randal señaló, esta pregunta no es coherente con la forma números de teléfono están formateados en América del Norte (a pesar de que el PO declaró 'los primeros dos dígitos no comienzan con 0 o 1'). Una mejor expresión regular para los números telefónicos de América del Norte sería:

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

Por ejemplo, el código de área de Washington DC es (202). NYC tiene código de área (212). El norte de Nueva Jersey tiene (201).

Pero más exactamente, el NANP tiene muchas reglas en lo que respecta a lo que está permitido en el código de área y el intercambio (primeros seis dígitos). Esta expresión regular aún debe cubrir la mayoría de los casos. https://en.wikipedia.org/wiki/North_American_Numbering_Plan

+0

¿Dónde dijo que es para Estados Unidos? – Gui13

0

los números de teléfono serán de 10 dígitos, y comenzará a partir de 7,8 y 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 = "Introduzca número de móvil válido")]

referencia: http://www.regular-expressions.info/numericranges.html

Cuestiones relacionadas