Regex para el número de Seguridad Social de EE. UU.

Usa /^(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}$/ para comprobar que una cadena completa es un número de Seguridad Social de EE. UU. válido. Cada ejemplo de abajo se ha probado con el patrón, y puedes abrirlo en el Probador de Regex con las muestras ya cargadas.

Actualizado el

/^(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}$/
Abrir en el Probador de Regex
EntradaResultado
123-45-6789✓ Coincide
219-09-9999✓ Coincide
000-12-3456✗ No coincide
666-12-3456✗ No coincide
123-00-4567✗ No coincide
123456789✗ No coincide
900-12-3456✗ No coincide

Cómo funciona el patrón

ParteSignificado
(?!000|666|9\d\d)\d{3}Número de área: tres dígitos, pero nunca 000, 666 ni 900–999
(?!00)\d{2}Número de grupo: nunca 00
(?!0000)\d{4}Número de serie: nunca 0000
-Guiones entre las partes

Ejemplos de código

JavaScript

const re = /^(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}', value))

PHP

preg_match('/^(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}$/', $value) === 1;

Notas y limitaciones

Los lookaheads negativos descartan los rangos de números que la Administración del Seguro Social nunca asigna. Trata los SSN como datos sensibles: enmascáralos en los logs y en las interfaces.

Preguntas frecuentes

¿Cuál es el regex para el número de Seguridad Social de EE. UU.?
/^(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}$/ — coincide con la cadena completa. Consulta la tabla de arriba para ver qué hace cada parte.
¿Qué ejemplos coinciden?
De los ejemplos probados, coinciden estos: 123-45-6789, 219-09-9999. Los demás no.
¿Cómo pruebo este regex?
Haz clic en «Abrir en el Probador de Regex»: el patrón, los flags y el texto de muestra se cargan automáticamente, y las coincidencias se resaltan mientras editas.