JavaScript正则表达式测试,如果字符串包含特定的单词(带变量)

Alp*_*Alp 10 javascript regex string-comparison

我有一个正则表达式来检查字符串是否包含特定的单词.它按预期工作:

/\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
Run Code Online (Sandbox Code Playgroud)

但我需要一个即将在变量中检查的词.使用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
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

小智 25

var myWord = 'word';
new RegExp('\\b' + myWord + '\\b')
Run Code Online (Sandbox Code Playgroud)

\从字符串构建正则表达式时,您需要双重转义.


这是因为\在字符串文字中开始一个转义序列,所以它永远不会进入正则表达式.通过这样做\\,你'\'在字符串中包含一个文字字符,这使得正则表达式/\bword\b/.

  • +1,请参阅http://jsfiddle.net/TxQ7c/6/ (2认同)