2016-09-02 3 views
-1

Я хочу совместить выражение, подобное (010)12345678 или 010-12345678. Теперь мое регулярное выражение - \(?\d{3}[)-]\d{8}, но оно встречается с выражением типа (010-12345678. Как мне написать истинное регулярное выражение?нужно регулярное выражение для соответствия номеру телефона

EDIT:

Я пишу правильный регулярное выражение, как (\(\d{3}\)|[^(]\d{3}-)\d{8}, которые могут удовлетворить свои потребности.

+0

Чтобы написать * истинное регулярное выражение *, вы можете попробовать немного сложнее. Вы слышали о том, что вы говорите '' 'оператор чередования? –

+1

Я пишу правильное регулярное выражение типа '(\ (\ d {3} \) | [^ (] \ d {3} -) \ d {8}', которое может удовлетворить мои потребности. – GerBawn

+0

Отлично, но я думаю '^ (\ (\ d {3} \) \ \ d {3}) - \ d {8} $ 'было бы лучше, если вы не используете его внутри метода regex, который требует полного соответствия строк (например, Java' matches() 'или шаблон HTML5. Где вы используете регулярное выражение? –

ответ

1

Обратите внимание, что (\(\d{3}\)|[^(]\d{3}-)\d{8} также будет соответствовать номеру ( перед номером, который начинается с 3 цифр и - из-за [^(].

Вы должны удалить его и использовать

(\(\d{3}\)|\d{3}-)\d{8} 
^^^^^^^^^^^^^^^^^^ 

См demo. Или привязанная версия:

^(\(\d{3}\)|\d{3}-)\d{8}$ 

См another demo

деталь Pattern:

  • ^ - начало строки
  • (\(\d{3}\)|\d{3}-) - Группа 1, соответствующие одному из 2-х вариантов:
    • \(\d{3}\) - ( следуют с 3-х цифр и буквального )
    • | - или
    • \d{3}- - 3 цифр и буквального -
  • \d{8} - 8 цифр
  • $ - конец строки.

В зависимости от регулярных выражений, \d, возможно, потребуется замена с [0-9].

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