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

时间:2012-04-10 17:59:55

标签: 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

但我需要一个即将在变量中检查的词。使用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

这里有什么问题?

1 个答案:

答案 0 :(得分:25)

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

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


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