5

可能重复:
如何使用 JavaScript 中的正则表达式匹配多个匹配项,类似于 PHP 的 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”的开始和结束索引。

4

2 回答 2

12

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

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

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

于 2012-08-20T02:35:24.250 回答
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`
于 2012-08-20T02:39:02.653 回答