Подтвердить что ты не робот

Регулярное выражение для подтверждения номеров телефонов США?

Возможный дубликат:
Полное регулярное выражение для проверки номера телефона
Подтвердите номер телефона с помощью JavaScript

Я пытаюсь написать регулярное выражение для проверки номера телефона в США  (123)123-1234 - true  123-123-1234 - true

все остальное недействительно.

Я придумал что-то вроде

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

Но это подтверждает, 123) -123-1234 (123-123-1234

который НЕ ПРАВИЛЬНО.

4b9b3361

Ответ 1

Самый простой способ сопоставить оба

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

и

^[0-9]{3}-[0-9]{3}-[0-9]{4}$

заключается в использовании чередования ((...|...)): укажите их как два основных варианта:

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

Кстати, когда американцы помещают код области в круглые скобки, мы фактически кладем пробел после этого; например, я бы написал (123) 123-1234, а не (123)123-1234. Поэтому вы можете написать:

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

(Хотя, вероятно, лучше всего явно продемонстрировать формат, в котором вы ожидаете, что будут номера телефонов.)