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