5

重複の可能性:
PHP の preg_match_all() に似た JavaScript の正規表現で複数の出現を一致させるにはどうすればよいですか?

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"]

indexOfこれで、 と を使用しlengthて開始/終了インデックスを見つけることができます。

于 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 に答える