可能重复:
How can I match multiple occurrences with a regex in JavaScript similar to PHP's preg_match_all()?
在Javascript中,是否可以在字符串中找到与正则表达式匹配的所有子串的起始和结束索引?
功能签名:
function getMatches(theString, theRegex){
//return the starting and ending indices of match of theRegex inside theString
//a 2D array should be returned
}
例如:
getMatches("cats and rats", /(c|r)ats/);
应该返回数组[[0, 3], [9, 12]]
,它代表字符串中“cats”和“rats”的起始和结束索引。
答案 0 :(得分:10)
使用match
查找与正则表达式匹配的所有子字符串。
> "cats and rats".match(/(c|r)ats/g)
> ["cats", "rats"]
现在,您可以使用indexOf
和length
来查找开始/结束索引。
答案 1 :(得分:2)
function getMatches(theString, theRegex){
return theString.match(theRegex).map(function(el) {
var index = theString.indexOf(el);
return [index, index + el.length - 1];
});
}
getMatches("cats and rats", /(c|r)ats/g); // need to use `g`