Saltar al contenido

Expresión regular para coincidir con el número de teléfono estándar de 10 dígitos {DH}

junio 19, 2022
1655663150 apple touch icon@2

Comenzando con la respuesta de @Ravi, también apliqué algunas reglas de validación al código de área NPA (código de área).

Particularmente:

  • Debe comenzar con 2 (o más).
  • No puede tener «11» como segundo y tercer dígito (N11).

Hay algunas otras limitaciones, incluidos los bloques reservados (N9X, 37X, 96X) y 555, pero los dejé fuera, principalmente porque los bloques reservados podrían tener un uso futuro y 555 es útil para realizar pruebas.

se me ocurrio esto:

^((+d{1,2}|1)[s.-]?)?(?[2-9](?!11)d{2})?[s.-]?d{3}[s.-]?d{4}$

Alternativamente, si también desea hacer coincidir valores vacíos (cuando el campo no es obligatorio), puede usar:

(^((+d{1,2}|1)[s.-]?)?(?[2-9](?!11)d{2})?[s.-]?d{3}[s.-]?d{4}$|^$)

Mis casos de prueba para números válidos (muchos de la respuesta de @Francis) son:

18005551234
1 800 555 1234
+1 800 555-1234
+86 800 555 1234
1-800-555-1234
1.800.555.1234
+1.800.555.1234
1 (800) 555-1234
(800)555-1234
(800) 555-1234
(800)5551234
800-555-1234
800.555.1234

Mis casos de prueba no válidos incluyen:

(003) 555-1212     // Area code starts with 0
(103) 555-1212     // Area code starts with 1
(911) 555-1212     // Area code ends with 11
180055512345       // Too many digits
1 800 5555 1234    // Prefix code too long
+1 800 555x1234    // Invalid delimiter
+867 800 555 1234  // Country code too long
1-800-555-1234p    // Invalid character
1 (800)  555-1234  // Too many spaces
800x555x1234       // Invalid delimiter
86 800 555 1212    // Non-NA country code doesn't have +

Mi expresión regular no incluye agrupación para extraer los grupos de dígitos, pero se puede modificar para incluirlos.

. Contenido relacionado:

Expresión regular para coincidir con el número de teléfono estándar de 10 dígitos {DH}