RegExp - Глобальный поиск c запоминанием р-тов
Приветствую, народ, в край запутался, разъясните пожалуйста по следующему вопросу
Нужно: из исходной строки выбрать по паттерну все совпадения и запомнить их. Что делаем: ВАРИАНТ 1: // исходная строка, в которой ищем требуемые последовательности var testStr = '12, 23, 45, 54'; /* регулярка, котороя ищет последовательности цифр, после которой следует запятая, и запоминает только последовательность цифр */ var re = new RegExp("([0-9]+),", "gmi"); // собственно, поиск var match = re.exec(testStr); // и смотрим, что нашли document.write(match); Проблема заключается в том, что не смотря на использование флага g и скобок, у нас в match будет только первое совпадение с паттерном, то есть "12," и та последовать цифр, которую собственно хотели достать из запомненных значений - в скобках, "12". Требуется же, получить все последовательности цифр (без запятой), которые должны запоминаться, поскольку в паттерне присутствуют скобки, то есть. нужно получить массив совпадений с цифрами, то есть match[1] == 12 match[2] == 23 match[3] == 45 ... собственно, как это сделать ? ВАРИАНТ 2: var testStr = '12, 23, 45, 54'; var re = new RegExp("([0-9]+),", "gmi"); var match = testStr.match(re); document.write(match); в этом же случае, в массив match уже сохраняются все совпадения с паттерном, однако, сохраняются не запоминаемые значения только последовательности цифр, но так же и запятая, присутствующая в паттерне ВНЕ скобок! То есть, результатом выполнения этого примера будет: match[1] == 12, // присутствует запятая match[2] == 23, // присутствует запятая match[3] == 45, // присутствует запятая Другими словами, каким образом я могу получить массив значений совпадений с паттерном последовательностей находящихся в скобках в случае глобального поиска? Спасибо! |
http://javascript.ru/RegExp/exec
читайте |
Часовой пояс GMT +3, время: 21:09. |