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

时间:2011-05-06 20:45:52

标签: javascript jquery regex

我想在JavaScript中构建一个与单词匹配但不属于它的RegEx。我认为像\ bword \ b这样的东西效果很好。我的问题是这个词是事先不知道的,所以我想用一个变量来组装正则表达式,这个变量把这个词按照以下几行进行匹配:

r = "\b(" + word + ")\b";
reg = new RegExp(r, "g");
lexicon.replace(reg, "<span>$1</span>"
我注意到,

不起作用。我的想法是用span标记替换段落中的特定单词。有人能帮助我吗?

PS:我正在使用jQuery。

4 个答案:

答案 0 :(得分:13)

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

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

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

应该可以做到这一点,虽然我还没有测试过。

你可能不应该使用r的全局(也可能不适用于reg)。

答案 1 :(得分:3)

你没有逃避反斜杠。所以你应该:

r = "\\b(" + word + ")\\b"; //Note the double backslash
reg = new RegExp(r, "g");

另外,你应该转义'word'中的特殊字符,因为你不知道它是否可以有正则表达式特殊字符。

希望这会有所帮助。干杯

答案 2 :(得分:0)

不要在regexp变量中写表达式,因为它不起作用!

示例(不工作):

 var r = "^\\w{0,"+ maxLength-1 +"}$";    // causes error
 var reg = new RegExp(r, "g");

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

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

答案 3 :(得分:0)

使用此

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