複数の文字列を正規表現と一致させるにはどうすればよいですか?
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
コンソールへの出力。
ここの例