2016-04-21 3 views
-1

Существует следующий код:Js переменная регулярное выражение, чтобы получить все матчи в строке

s.match(/\+[A-Za-z0-9_]+/); 

Я использую его, чтобы получить все Примеси Джейд из строки. Он работает хорошо для одного Jade mixins в строке («+ article»), но не работает для 2 mixins в строке («+ article + b») - он возвращает массив только с первым элементом. Что я сделал не так? Благодаря! Также будет полезно получить массив со значениями без плюса!

+1

's.match (/ \ + [A-Za-z0-9 _] +/г);', добавить глобальный флаг 'G' –

ответ

0

Добавить глобальный флаг g в своем регулярном выражении

s.match(/\+[A-Za-z0-9_]+/g); 

UPDATE: Demo с удаленного + символом

s = '+abc +4kk +ttt'; 
 
var res = s.match(/\+[A-Za-z0-9_]+/g).map(function(v) { 
 
    return v.substring(1) // get string after `+` 
 
}); 
 

 
document.write('<pre>' + JSON.stringify(res, null, 3) + '</pre>');

Или Regex с захваченной группой

var s = '+abc +4kk +ttt'; 
 
var reg = /\+([A-Za-z0-9_]+)/g; 
 

 
var matches, res = []; 
 
while (matches = reg.exec(s)) { 
 
    res.push(matches[1]); // get captured group value 
 
} 
 

 
document.write('<pre>' + JSON.stringify(res, null, 3) + '</pre>');

+0

Кроме того, можно получить массив значения без плюса? – malcoauri

+0

@PranavCBalan Или ['\ + (\ S +)'] (https://regex101.com/r/sW2tB3/1) и получение первой захваченной группы. – Tushar

+0

@malcoauri: ответ обновлен ...... –

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