2015-10-14 3 views
-5

Я ищу регулярное выражение, которое будет соответствовать любому из этих форматов телефонных номеров, но ТОЛЬКО эти форматы. Например, (999-999-999 не должно работать. Я знаю, как использовать? Для необязательного, но я хочу, чтобы второе) было обязательным, только если число начинается с (и второго) не должно быть необязательным, если число не начать с (. Кроме того, везде, где есть черное пространство, там может быть неограниченное количество пробелов. (999) 999-999 действует, но (999) 999-9999 неНомер телефона регулярные выражения точный формат

999-999-9999 
999 999 9999 
999 999-9999 
9999999999 
999 9999999 
(999) 999-9999 
(999) 999 9999 
+2

Вы должны показать, что вы уже пробовали. Даже если вы просто составляете некоторые вещи, которые выглядят неопределенно, как регулярное выражение. Но некоторые усилия с вашей стороны ожидаются. – lintmouse

+0

Возможный дубликат [Регулярное повторение] [http://stackoverflow.com/questions/8634139/phone-validation-regex) –

ответ

0

Я предлагаю купить себе эту книгу:.

http://www.amazon.ca/Regular-Expressions-Cookbook-Jan-Goyvaerts/dp/1449319432/ref=sr_1_1?ie=UTF8&qid=1444846344&sr=8-1&keywords=regular+expression+cookbook

, если вы боретесь за такие основные регулярные выражения (которые можно найти почти везде в сети) Это cookb ook, что означает, что решения можно использовать напрямую, как они есть в книге.

От страницы 249:

^\(?([0-9]{3})\)?[- ]?([0-9]{3})[- ]?([0-9]{4}) 

У вас есть три захвата группы:

первого и второго ([0-9]{3}) третьего ([0-9]{4})

Вы можете использовать эти группы захвата, чтобы вернуть другой раздел телефона номер. Используйте неконвертирующую группу (?:) для повышения производительности (в этом контексте это не должно быть необходимо, если вы не используете цикл).

Это, если для необязательных круглых скобок \(? и \)?.

Вам нужно избежать скобки, поскольку она используется для группировки в регулярном выражении. Значок вопроса (?) Делает предыдущий элемент или группу необязательным.

Используйте [- ]?, чтобы сделать пробел и дефис необязательным между последовательностью цифр.

Дополнительная заметка: Это довольно общее регулярное выражение, поэтому оно должно быть совместимо с любым языком программирования.

Для этого вы должны знать это событие, хотя общая структура регулярного выражения практически такая же, существуют существенные различия между различными языковыми реализациями для улучшенных/расширенных функциональных возможностей.

В следующий раз, вы должны также указать, в какой язык программирования вы хотите регулярное выражение (на примере: PHP, Javascript и т.д.)

Смежные вопросы