@nazgul

Регулярное выражение

Здравствуйте. Есть регулярное выражение:
^(?:(?!039|050|063|066|067|068|091|092|093|094|095|096|097|098|099|00).)*$
Его задача заключается в том чтобы не пропускать звонки на номера мобильных операторов Украины и зарубеж (00).
Проблема заключается в том, что помимо прочего звонки не проходят на номера в теле которых встречаются указанные подстроки. Например на номер 0395420245 звонок не проходит и это хорошо, но он также не пройдет и на номер 0445421067.
  • Вопрос задан
  • 3043 просмотра
Пригласить эксперта
Ответы на вопрос 3
@GreenPeace
Проблема заключается в следующем(для удобства я сокращу ваше длинное или до одного варианта):
^(?:(?!00).)*$
Проверка (?! ...) находится внутри группы со знаком *, то есть выполняется каждый раз когда reg Exp engine переходит к следующему символу. Для вашего случая данную проверку надо вынести за группу(а сами скобки группы вообще убрать — так как в ней останется только 1 элемент):
^(?!00).*$
Ответ написан
Комментировать
@Neir0
А вообще зачем для этого регулярные выражения использовать? Помойму проще и быстрей проверить строковыми функциями
Ответ написан
Комментировать
taliban
@taliban
php программист
«0395420245».match(/^(?:039|050|063|066|067|068|091|092|093|094|095|096|097|098|099|00).*$/)
Не надо делать просмотр вперед, если используете полную строку
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы