2013-11-20 4 views
0

В настоящее время я использую регулярное выражение для проверки Цифровых только телефонные номера, который выглядит примерно так:Регулярное выражение для буквенно-цифрового номера телефона?

/^([\d \-\)\(\+\.]{10,16})$/ 

У меня есть требование, когда мне нужно обновить регулярное выражение для поддержки ниже допустимых случаев телефонных номеров :

(866) 999-EMAS 
1-800-MY-APPLE 

Благодаря

+1

Вы говорите о Javascript, Ruby или iOS regexes? (у вас есть теги для всех). И вы что-то пробовали, или просто хотите, чтобы мы выполнили ваши требования? – tessi

+0

@tessi Это для рубиновых регулярных выражений. Я полагаю, что регулярное выражение должно быть одинаковым независимо от того, какой язык вы используете. Разве они не были? То, что я пытаюсь, это^([\ d \ - \) \ (\ + \. [A-zA-Z0-9]] {10,16}) $. Я не уверен, что это допустит любой недопустимый случай, поскольку я не эксперт по регулярному выражению, поэтому я разместил этот вопрос. – Raghu

+0

* «Я полагаю, что регулярное выражение должно быть одинаковым независимо от того, какой язык вы используете» * В идеальном мире да, но разные языки поддерживают разные функции регулярных выражений, поэтому это имеет значение. Я удалил другие теги, поскольку вы, похоже, интересуетесь только Ruby. –

ответ

0

После настройки моего существующего регулярного выражения это то, что я основывает, кажется, работает.

/^([\d \-\)\(\+\.[a-zA-Z0-9]]{10,16})$/ 
+0

Прочтите ответ, в котором говорится, что ответа нет. Затем (пока вы не научитесь писать автоматические тесты, чтобы играть «что, если» с вашим кодом), изучите Regexps с этой неприсоединительной маленькой веб-страницей: http://rubular.com/ – Phlip

+0

Прочитайте http://stackoverflow.com/a/737464/128421. –

2

Для проверки номера телефона нет такого понятия, как регулярное выражение ... Действительно, забудьте об этом. :-)

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

Добавление оскорбления к ранению, каждое место, по-видимому, имеет свой собственный способ представить номера телефонов: с местным кодом и региональными кодами или без, с множеством скобок, скобок, тире, точек, пробелов, букв и даже слов; вы называете это. В некоторых странах местные жители даже не могут договориться о том, как он должен быть отформатирован между собой за один и тот же номер.

В конце вы можете исправить свое регулярное выражение, добавив материал в свои скобки, например. [\d \-\)\(\+\.a-zA-Z]. Но, в конце концов, все равно будет не так, как если бы вам понадобился непустой почтовый индекс из-за соображений длины или какого-то края, в котором участвовали причудливые символы, которые вы еще не определили.

Единственный способ по-настоящему убедиться в том, чтобы набрать номер и фактически разместить звонок.

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