2016-05-13 7 views
-4

мне нужен телефон валидатор со следующими условиями:?

  • Необязательно "+" в начальная
  • 0 или 1 дефис
  • По крайней мере, 10 номеров

Используется следующее регулярное выражение: ^\+?(\d+)(-(\d+)|(\d+)+)?$

это работает, но он считает «+» и " -" слишком.

я могу написать для бывших +123-45678

10 символов, но только 8 числа.

Там всегда должно быть не менее 10 номеров

+1

Не могли бы мы видеть ваш [mcve], с которым у вас проблемы? – kayess

+0

Возможный дубликат [Полное регулярное выражение для проверки номера телефона] (http://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation) –

+0

Тире ('-') может быть где-нибудь в строке? –

ответ

1

Давайте возьмем эту одну часть за один раз:

  • Необязательно «+» в начале

Вы достигли этого уже с:

^\+? 
  • 0 или 1 дефис

Вы можете добиться этого с lookahead:

^(?=[^-]*-?[^-]*$) 
  • По крайней мере, 10 номеров

Я полагаю, что он также должен содержать только цифры (и, возможно, дефис)? Опять же, используя предпросмотр:

^(?=(\d-?){10}) 

Собираем все вместе:

^\+?(?=[^-]*-?[^-]*$)(?=(\d-?){10}) 

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

+0

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

+0

Ок см. [V2] (https://regex101.com/r/qK1uM0/2). он соответствует, но он не должен соответствовать –

+0

Ahh да, отлично.OP фактически не указывал, что номера телефонов могут содержать ТОЛЬКО цифры, хотя это кажется разумным. Я также предоставил «Улучшенный» вариант. –

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