Cómo funciona el patrón
| Parte | Significado |
|---|---|
(?:\+1[-. ]?)? | Código de país +1 opcional, seguido de un separador opcional |
\(?([2-9]\d{2})\)? | Código de área (grupo 1), opcionalmente entre paréntesis; no puede empezar por 0 ni por 1 |
[-. ]? | Guion, punto o espacio opcional |
(\d{3}) | Prefijo central (grupo 2) |
(\d{4}) | Número de línea (grupo 3) |
Ejemplos de código
JavaScript
const re = /^(?:\+1[-. ]?)?\(?([2-9]\d{2})\)?[-. ]?(\d{3})[-. ]?(\d{4})$/;
re.test(value); // true or falsePython
import re
bool(re.fullmatch(r'(?:\+1[-. ]?)?\(?([2-9]\d{2})\)?[-. ]?(\d{3})[-. ]?(\d{4})', value))PHP
preg_match('/^(?:\+1[-. ]?)?\(?([2-9]\d{2})\)?[-. ]?(\d{3})[-. ]?(\d{4})$/', $value) === 1;
Notas y limitaciones
Los tres grupos te permiten normalizar cualquier formato aceptado, por ejemplo a ($1) $2-$3. Para números internacionales, guárdalos en formato E.164 y usa una biblioteca como libphonenumber para una validación real.
Probador de expresiones regulares
Escribe un patrón y observa cómo se resaltan las coincidencias en tiempo real en tu texto de prueba.