Как работает шаблон
| Часть | Значение |
|---|---|
(?!000|666|9\d\d)\d{3} | Номер области: три цифры, но никогда не 000, 666 или 900–999 |
(?!00)\d{2} | Номер группы: никогда не 00 |
(?!0000)\d{4} | Серийный номер: никогда не 0000 |
- | Дефисы между частями |
Примеры кода
JavaScript
const re = /^(?!000|666|9\d\d)\d{3}-(?!00)\d{2}-(?!0000)\d{4}$/;
re.test(value); // true or falsePython
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;
Примечания и ограничения
Отрицательные опережающие проверки (lookahead) исключают диапазоны номеров, которые Администрация социального обеспечения США никогда не выдаёт. Относитесь к SSN как к конфиденциальным данным: маскируйте их в логах и интерфейсах.
Тестер регулярных выражений
Введите шаблон и смотрите, как совпадения подсвечиваются прямо в тестовом тексте.