Регулярное выражение для соответствия номерам телефонов в США - PullRequest
1 голос
/ 13 октября 2009

Регулярное выражение ^((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}$ соответствует строкам вида XXX-XXX-XXXX и XXX-XXXX (я что-то упускаю?).

Однако он не соответствует (XXX) XXX-XXXX и (XXX) XXX-XXX-XXXX (что мне нужно для соответствия).

Можете ли вы помочь мне исправить это, чтобы он соответствовал форматам
XXX-XXX-XXXX, XXX-XXXX, (XXX) XXX-XXXX, (XXX) XXX-XXXX
не заставляя его соответствовать другим форматам строк, которые я не хочу?

Ответы [ 5 ]

6 голосов
/ 13 октября 2009

Ваша спецификация немного сбивает с толку. Ваши последние два случая выглядят одинаково:
XXX-XXX-XXXX
XXX-XXXX
(XXX) XXX-XXXX
(XXX) XXX-XXXX

(Похоже, вы пытаетесь сопоставить номер телефона, верно?) Предполагая, что ваш последний случай - «(XXX) XXX-XXXX» (между пробелом и обычным номером нет пробела, который я предполагаю, что «?» Означает необязательный пробел), тогда ваш RegExp почти верен, просто добавьте две обратные косые черты перед круглые скобки кода области, поэтому они соответствуют простым символам, а не специальным группирующим символам:

^((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}$

Обратите внимание, что ваше регулярное выражение, возможно, не прошло правильно, я заметил, что переполнение стека удалило одну обратную косую черту из шаблона RE, мне пришлось ввести двойную обратную косую черту "\\", чтобы получить одну обратную косую черту, чтобы получилось в сообщении

2 голосов
/ 13 октября 2009

Попробуйте это:

(\(\d{3}\) )?(\d{3}-){1,2}(\d{4})
0 голосов
/ 04 декабря 2017

^ (((\ d {3})?) | (\ D {3} -))? \ D {3} - \ d {4} $ ^

это будет работать.

0 голосов
/ 02 июля 2013

Я думаю, это то, что вы ищете,

/ ^ ((((([0-9] {3}) -) | ((([0-9] {3})) \ s)) ([0-9] {3}) - ([0-9] {4})) | (([0-9] {3}) - ([0-9] {4}))) $ / * * 1003

Это будет работать для следующих моделей XXX-XXX-XXXX, XXX-XXXX, (XXX) XXX-XXXX

0 голосов
/ 13 октября 2009

Вам нужно избежать скобок, например: \ (в противном случае они не сопоставляются и вместо этого делают захват.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...