8

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.

2
  • If you think \bword\b will work, why are you creating it as \b(word)\b? Commented May 6, 2011 at 20:47
  • because I want to capture the given word which will not always be "word". Commented May 6, 2011 at 22:12

4 Answers 4

13

\ 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).

Sign up to request clarification or add additional context in comments.

1 Comment

thanks for the answer, it works as expected! by the way, I am not using globals, that was just simple mock code for the question. Thanks again!
3

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

1 Comment

Your answer is also correct but I saw the other first and it worked, I bumped it up though. Thanks!
0

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");

Comments

0

Use this

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.