2016-02-08 2 views
1

Это может быть слишком просто найти в Интернете, но у меня возникла проблема с поиском ответа.Как найти все совпадение регулярных выражений в строке

Я получаю строку как текст ответа HTTP, содержащий подстроки, которые я хочу захватить по одному для дальнейшего процесса. Его относительный URL.

, например:

var string = "div classimage a hrefstring1.png img idEMIC00001 he19.56mm wi69.85mm srcstring1.png separated by some html   div classimage a hrefstring2.png srcstring2.png div separated by some html many such relative urls"; 
var re = new RegExp("[a-z]{5,10}[0-9].png"); 
var match = re.exec(string) 
WScript.Echo (match); 

Это дает первый матч. Я хочу получить всю коллекцию по одному. Я использую Jscript. Я новичок в javascript.

После ответа я попробовал это.

var string = "div classimage a hrefstring1.png img idEMIC00001 he19.56mm wi69.85mm srcstring1.png separated by some html   div classimage a hrefstring2.png srcstring2.png div separated by some html many such relative urls"; 
var re = new RegExp("[a-z]{5,10}[0-9].png", "g"); 
var match = re.exec(string) 
WScript.Echo (match); 

Но не повезло.

+0

Используйте модификатор 'g', чтобы получить массив. – vaso123

+1

'.png' должно быть, вероятно,' \ .png'. –

ответ

5

использования 'g' для глобального поиска и match получить все матчи: -

var string = "div classimage a hrefstring1.png img idEMIC00001 he19.56mm wi69.85mm srcstring1.png separated by some html   div classimage a hrefstring2.png srcstring2.png div separated by some html many such relative urls"; 
 

 
var re = new RegExp("[a-z]{5,10}[0-9].png", 'g'); 
 

 
var matches = string.match(re); 
 

 
for(var i = 0; i < matches.length; i++){ 
 
    console.log(matches[i]); 
 
}

+0

Это то, что я хотел. – Rahul

+0

рад, что я мог бы помочь. – BenG

+0

Пробовал, но сказал, что вы не можете принять через 2 минуты. Подождите, приятель. – Rahul

3

Это должно исправить вашу проблему:

var re = new RegExp("[a-z]{5,10}[0-9].png", "g");

«Г» означает глобальное, это будет соответствовать все вхождения в строке

+0

Это правильный ответ, но, пожалуйста, добавьте некоторое расширение для оригинального плаката. – vaso123

+0

@lolka_bolka Отредактировано решение – Gwendal

+0

Я слепо попробовал заменить предложенную вами линию, но не повезло. Возможно, проблема в jscript. Есть что-то еще, что мне нужно изменить. Поскольку это моя первая рука в javascript после базового обучения, посмотрите, что-то еще не так в моем скрипте. – Rahul

1

просто сделать его

var match = string.match(re) 

вместо

var match = re.exec(string); 

остальной код, кажется, хорошо.