1

次のコードは、期待どおりに「応答」を書き込みます。

var str = "Would you like to have responses";
var pattern = "Response";
document.write(str.match(new RegExp(pattern,'gi')));

しかし、のような指定子を追加する\bと、次のように「null」と書き込まれます。

var str = "Would you like to have responses";
var pattern = "\bResponse";
document.write(str.match(new RegExp(pattern,'gi')));

どうすればそれを機能させることができますか?


興味深いことに、次の両方の作品

document.write(str.match(new RegExp(/Response/gi)));
document.write(str.match(new RegExp(/\bResponse/gi)));

new RegExp(pattern,modifiers);しかし、私は構文を使いたいです。

4

1 に答える 1

2

バックスラッシュは文字列で特別な意味を持ち、エスケープ文字です。文字列から正規表現を作成する場合は、円記号をエスケープする必要があります。

エスケープ文字が同じ意味を持っている場合、あなたはそれに気付かないでしょう:

 '\n'.match('\n');
 '\n'.match('\\n');

両方とも機能します。ただし、\b文字列ではそのような意味はありません。(
new RegExp("\bResponse");はバックスペース文字であり、表示されている文字を表していません)になります。エスケープに特別な意味がない場合、円記号は削除されます。/Response/\b

于 2012-07-01T12:25:34.417 に答える