java-скрипт regex .match находит только один результат - PullRequest
1 голос
/ 26 марта 2012

У меня есть этот код JS:

result = subject.match(/<a.*class="gallery_browser_thumbnail".*href="(.+)">/i);

Я хочу получить несколько тегов в html-источнике но показывает только 1 результат

если я использую / g в конце шаблона, он возвращает целые шаблоны, но я просто хочу только часть href я имею в виду -> (. +) эта часть

Вот как я могу захватить ввод HTML:

var subject = String(document
.getElementsByTagName("body")[0].innerHTML);

любая помощь?

окончательный рабочий скрипт:

    var subject = String(document.getElementsByTagName("body")[0].innerHTML);
var regex = /<a.*class="gallery_browser_thumbnail".*href="(.+)">/gi;
var matched = null;
while (matched = regex.exec(subject)) {
  alert(matched[1]);
}

Ответы [ 2 ]

0 голосов
/ 26 марта 2012

Вы можете использовать exec для проверки RegExp.Как то так:

var subject = String(document.getElementsByTagName("body")[0].innerHTML),
    regexp = /<a.*class="gallery_browser_thumbnail".*href="(.+)">/gi, //g for global match
    match = regexp.exec(subject),
    result = [];
while(match != null){
    result.push(match[1]); // the second value is matched group
    match = regexp.exec(subject);
}
0 голосов
/ 26 марта 2012

Измените на ленивое соответствие, добавив ленивый квантификатор ?:

result = subject.match(/<a.*?class="gallery_browser_thumbnail".*?href="(.+?)">/i);
...