我想在JavaScript中构建一个与单词匹配但不属于它的RegEx。我认为像\ bword \ b这样的东西效果很好。我的问题是这个词是事先不知道的,所以我想用一个变量来组装正则表达式,这个变量把这个词按照以下几行进行匹配:
r = "\b(" + word + ")\b";
reg = new RegExp(r, "g");
lexicon.replace(reg, "<span>$1</span>"
我注意到,不起作用。我的想法是用span标记替换段落中的特定单词。有人能帮助我吗?
PS:我正在使用jQuery。
答案 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)"