获取与正则表达式匹配的字符串中的所有子字符串

时间:2012-08-20 02:32:10

标签: javascript regex

  

可能重复:
  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”的起始和结束索引。

2 个答案:

答案 0 :(得分:10)

使用match查找与正则表达式匹配的所有子字符串。

> "cats and rats".match(/(c|r)ats/g)
> ["cats", "rats"]

现在,您可以使用indexOflength来查找开始/结束索引。

答案 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`