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

Почему неправильно отрабатывает регулярное выражение для Java Pattern?

Имеется Регулярное выражение

Pattern pattern = Pattern.compile("^(7)+(701|702|775|778|705|777|771|776|707|747|700|708)+(\\d{7})$");
        Matcher matcher = pattern.matcher(value);


т.е. по моему логике (вероятно я не правильно думаю)

первое вхождение 7 это первая цифра от начала строки, Далее необходимо найти 1 из списка заготовленных значений, и после 7 любых значений.

В данном случае значение: 77771234567 отработает правильно, но если добавить еще одну цифру, то в группу 1 попадет значение 7(2-й символ) и во второе 771

т.е. получается что 1-й символ опускается, может кто объяснить как это можно исправить
  • Вопрос задан
  • 86 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
hahenty
@hahenty
('•')
Плюсы надо убрать. Из за них регулярка может посчитать правильной длину строки больше одиннадцати символов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Сбер Москва
от 300 000 до 350 000 ₽
DIGITAL SECTOR Краснодар
от 250 000 до 450 000 ₽
Сбер Санкт-Петербург
До 350 000 ₽