开发者

How to use variables inside Regular Expression in Javascript

I want to build a RegEx in JavaScript that matches a word but not part of it. I think that something like \bword\b works well for this. My problem is that the word is not known in advance so I would like to assemble the regular expression using a variable holding the word to be matched something along the lines of:

r = "\b(" + word + ")\b";
reg = new RegExp(r, 开发者_如何转开发"g");
lexicon.replace(reg, "<span>$1</span>"

which I noticed, does not work. My idea is to replace specific words in a paragraph with a span tag. Can someone help me?

PS: I am using jQuery.


\ is an escape character in regular expressions and in strings.

Since you are assembling the regular expression from strings, you have to escape the \s in them.

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

should do the trick, although I haven't tested it.

You probably shouldn't use a global for r though (and probably not for reg either).


You're not escaping the backslash. So you should have:

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

Also, you should escape special characters in 'word', because you don't know if it can have regex special characters.

Hope this helps. Cheers


And don't write expressions in the regexp variable, because it does not work!

Example(not working):

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

Example, which returns the string as expected:

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


Use this

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜