Задать вопрос
@nazgul

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

Здравствуйте. Есть регулярное выражение:
^(?:(?!039|050|063|066|067|068|091|092|093|094|095|096|097|098|099|00).)*$
Его задача заключается в том чтобы не пропускать звонки на номера мобильных операторов Украины и зарубеж (00).
Проблема заключается в том, что помимо прочего звонки не проходят на номера в теле которых встречаются указанные подстроки. Например на номер 0395420245 звонок не проходит и это хорошо, но он также не пройдет и на номер 0445421067.
  • Вопрос задан
  • 3045 просмотров
Подписаться 2 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Хекслет
    Java-разработчик
    10 месяцев
    Далее
  • Хекслет
    Python-разработчик
    10 месяцев
    Далее
  • Учебный центр IBS
    RT-001 Эксплуатация RT.DataLake
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 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).*$/)
Не надо делать просмотр вперед, если используете полную строку
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы