2012-03-20 5 views
7

Я использую регулярное выражение: pattern=/([a-zA-Z0-9_\.].*?)=(.*?);/g;, которое имеет более одного соответствия в используемом тексте. Теперь я хочу содержимое, которое после «=». Я использовал RegExp.$2, но он дает только одно значение. Пожалуйста, помогите мне получить значение после «=» во всех доступных совпадениях.Группы регулярных выражений для нескольких совпадений в javascript

+0

Как вы используете регулярное выражение? – gilly3

+0

pattern.exec (script_txt); – user1275375

ответ

9

Вы должны перебирать спички в время цикла:

var match = null; 
while (match = pattern.exec(script_txt)) { 
    // Do something with match[2] 
} 
+0

Он также работает с RegExp. $ 2 Thankyou – user1275375

+1

Хорошо, это потрясающе. Вы объясните, почему это работает? Я видел эту технику, используемую здесь раньше, но потом не смог найти ее позже. Я просмотрел документацию и ничего не нашел. Почему вы получаете разные результаты от того же метода, что и те же данные? Он работает только в цикле 'while'? – gilly3

+2

Из документации '' exec' '(http://msdn.microsoft.com/en-us/library/windows/apps/z908hy33 (v = vs.94) .aspx): Если метод 'exec' doesn' t найти совпадение, он возвращает NULL (поэтому его можно ввести в цикл while while). Если он находит совпадение, он возвращает массив ... и изменяет глобальный объект «RegExp». ** Если глобальный флаг установлен для регулярного выражения, 'exec' ищет строку, начинающуюся в позиции, обозначенной значением' lastIndex' **. Если глобальный флаг не установлен, 'exec' ... ищет с начала строки. –

Смежные вопросы