0

複数の文字列を正規表現と一致させるにはどうすればよいですか?

nameここでは、との両方を一致させたいのですtxtが、name一致するのは?

var reg = new RegExp('%([a-z]+)%', "g");
reg.exec('%name% some text %txt%');
4

3 に答える 3

3

match代わりに使用してください:

'%name% %txt%'.match(reg); //["%name%", "%txt%"]

exec最初の一致のみを取得します (ただし、グループをキャプチャします)。

キャプチャ グループが重要な場合は、ループを使用できます。

var matches = [];
var str = '%name% some text %txt%';
var reg = new RegExp('%([a-z]+)%', "g");
while (match = reg.exec(str)){
    matches.push(match);
}

キャプチャされたグループのみを保持する場合は、代わりにこれを使用します。

matches.push(match[1]);
于 2012-11-19T11:51:50.400 に答える
3

String.match代わりに使用する必要がありますexec

'%name% some text %txt%'.match(reg);
于 2012-11-19T11:51:57.587 に答える
1

gフラグは機能しますが、同じ文字列に対して複数回実行する必要があります

var reg = new RegExp('%([a-z]+)%', "g");
var str = '%name% some text %txt%';
var result;

while( result = reg.exec( str ) ) { // returns array of current match
    console.log( result[1] ); // index 0 is matched expression. Thereafter matched groups.
}​

上記の出力nametxtコンソールへの出力。

ここの例

于 2012-11-19T12:01:13.413 に答える