Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Не идёт поиск если искомая строка начинается с не входящих в регексп

#javascript #регулярные_выражения #exec


Здравствуйте!

Моя задача состоит в поиске 2х групп в строке:


+
последовательность # и 0




var regex = /(\+?)((?:#*\s?)*(?:0*\s?)*(?:[.,])?(?:0*\s?)*(?:#*\s?)*)/;

var goodStr = '+#####0.00#######)';
var badStr = '(+#####0.00#######)';

console.log(regex.exec(goodStr));
console.log(regex.exec(badStr));




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

Почему такое поведение, ведь я не указываю ему поиск с начала строки?

Заметил, что такая ситуция лишь при использовании группировки.
    


Ответы

Ответ 1



Пустая строка подходит под твою регулярку, поэтому она и выбирается. Поиск делается с самого левого из вхождений. Самое левое - это пустая строка в нулевой позиции - её ты и получаешь. Рекомендую как-то переделать регулярку, чтобы пустая строка не являлась корректным вариантом.

Комментариев нет:

Отправить комментарий