如何在Javascript中使用正则表达式中的变量

如何在Javascript中使用正则表达式中的变量,javascript,jquery,regex,Javascript,Jquery,Regex,我想用JavaScript构建一个正则表达式,它匹配一个单词,但不匹配它的一部分。我认为像\bword\b这样的东西很适合这个。我的问题是这个词事先不知道,所以我想使用一个变量来组装正则表达式,该变量保存要匹配的词,如下所示: r = "\b(" + word + ")\b"; reg = new RegExp(r, "g"); lexicon.replace(reg, "<span>$1</span>" r=“\b”(“+word+”)\b”; reg=新的RegEx

我想用JavaScript构建一个正则表达式,它匹配一个单词,但不匹配它的一部分。我认为像\bword\b这样的东西很适合这个。我的问题是这个词事先不知道,所以我想使用一个变量来组装正则表达式,该变量保存要匹配的词,如下所示:

r = "\b(" + word + ")\b";
reg = new RegExp(r, "g");
lexicon.replace(reg, "<span>$1</span>"
r=“\b”(“+word+”)\b”;
reg=新的RegExp(r,“g”);
词汇。替换(注册号,“$1”
我注意到这不起作用。我的想法是用span标记替换段落中的特定单词。有人能帮我吗


PS:我正在使用jQuery。

\
是正则表达式中的转义字符和字符串中的转义字符

由于要从字符串中组装正则表达式,因此必须对其中的
\
进行转义

r = "\\b(" + word + ")\\b";
虽然我还没有测试过,但我应该能做到


不过,您可能不应该对
r
使用全局变量(也可能不应该对
reg
使用全局变量)。

您没有避开反斜杠。因此,您应该:

r = "\\b(" + word + ")\\b"; //Note the double backslash
reg = new RegExp(r, "g");
另外,您应该转义“word”中的特殊字符,因为您不知道它是否可以包含正则表达式特殊字符


希望这有帮助。干杯,不要在regexp变量中写表达式,因为它不起作用

示例(不起作用):

示例,按预期返回字符串:

 var m = maxLength - 1;
 var r = "^\\w{0,"+ m +"}$";
 var reg = new RegExp(r, "g");
用这个

r = "(\\\b" +word+ "\\\b)" 

如果您认为
\b单词\b
可以工作,为什么要将其创建为
\b(单词)\b
?因为我想捕获给定的单词,但它并不总是“单词”。谢谢你的回答,它的效果和预期的一样!顺便说一句,我没有使用globals,这只是这个问题的简单模拟代码。再次感谢!你的答案也是正确的,但我先看到了另一个,它起了作用,不过我把它放大了。谢谢!
r = "(\\\b" +word+ "\\\b)"