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