Я ответил на этот вопрос другим вопросом SO, прежде чем принять решение включить мой ответ в качестве ответа на этот поток, потому что никто не обращался к тому, как требовать / не требовать элементов, просто выдавая регулярные выражения: Regex работает неправильно, сопоставление неожиданных вещей
Из моего сообщения на этом сайте я создал краткое руководство, помогающее любому пользователю создать собственное регулярное выражение для собственного формата номера телефона, о котором я буду предупреждать (например, Я сделал это на другом сайте), что, если вы слишком ограничительны, вы не можете получить желаемые результаты, и нет решения «одного размера подходит всем» для принятия всех возможных телефонных номеров в мире - только то, что вы решите принять в качестве ваш формат выбора. Используйте на свой страх и риск.
/^
[\s]
или \s
[(]
и [)]
. Использование \(
и \)
является уродливым и может сбить с толку. ?
после него -
или [-]
. Если вы не ставите его первым или последним в ряд других символов, вам может потребоваться его избежать: \-
[-.\s]
потребует дефис, период или пробел. Значок вопроса после последней скобки сделает все из них необязательными для этого слота. \d{3}
: Требуется 3-значное число: 000-999. Сокращение для [0-9][0-9][0-9]
. [2-9]
: для этого слота требуется цифра 2-9. (\+|1\s)?
: принять «плюс» или 1 и пробел (символ трубы, |
, является «или») и делает его необязательным. Знак «плюс» должен быть экранирован. [246]
потребует 2, 4 или 6. [77|78]
потребует 77 или 78 . $/
: Завершить выражение