#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
Пустая строка подходит под твою регулярку, поэтому она и выбирается. Поиск делается с самого левого из вхождений. Самое левое - это пустая строка в нулевой позиции - её ты и получаешь. Рекомендую как-то переделать регулярку, чтобы пустая строка не являлась корректным вариантом.
Комментариев нет:
Отправить комментарий