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')

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


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

于 2012-04-10T18:02:47.007 回答