14

文字列に特定の単語が含まれているかどうかを確認するための正規表現があります。期待どおりに機能します。

/\bword\b/.test('a long text with the desired word amongst others'); // true
/\bamong\b/.test('a long text with the desired word amongst others'); // false

しかし、変数でチェックされようとしている単語が必要です。使用new RegExpは正しく機能しません、それは常に戻りますfalse

var myString = 'a long text with the desired word amongst others';

var myWord = 'word';
new RegExp('\b' + myWord + '\b').test(myString); // false

myWord = "among";
new RegExp('\b' + myWord + '\b').test(myString); // false

ここで何が問題になっていますか?

4

1 に答える 1

32
var myWord = 'word';
new RegExp('\\b' + myWord + '\\b')

\文字列から正規表現を作成するときは、をダブルエスケープする必要があります。


これは\、文字列リテラルでエスケープシーケンスを開始するため、正規表現に到達しないためです。を実行すると、文字列に\\リテラル'\'文字が含まれ、正規表現が作成され/\bword\b/ます。

于 2012-04-10T18:02:47.007 に答える