Как работает шаблон
| Часть | Значение |
|---|---|
(?:\+1[-. ]?)? | Необязательный код страны +1, за которым следует необязательный разделитель |
\(?([2-9]\d{2})\)? | Код области (группа 1), может быть указан в скобках; не может начинаться с 0 или 1 |
[-. ]? | Необязательный дефис, точка или пробел |
(\d{3}) | Код АТС (группа 2) |
(\d{4}) | Номер абонентской линии (группа 3) |
Примеры кода
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;
Примечания и ограничения
Три группы позволяют привести любой допустимый формат к единому виду, например к ($1) $2-$3. Для международных номеров храните их в формате E.164 и используйте библиотеку вроде libphonenumber для полноценной проверки.
Тестер регулярных выражений
Введите шаблон и смотрите, как совпадения подсвечиваются прямо в тестовом тексте.