複数の文字列を正規表現と一致させるにはどうすればよいですか?
nameここでは、との両方を一致させたいのですtxtが、name一致するのは?
var reg = new RegExp('%([a-z]+)%', "g");
reg.exec('%name% some text %txt%');
複数の文字列を正規表現と一致させるにはどうすればよいですか?
nameここでは、との両方を一致させたいのですtxtが、name一致するのは?
var reg = new RegExp('%([a-z]+)%', "g");
reg.exec('%name% some text %txt%');
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]);
String.match代わりに使用する必要がありますexec:
'%name% some text %txt%'.match(reg);
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.
}
上記の出力nameとtxtコンソールへの出力。
ここの例