Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaScript regex test if string contains specific word (with variable) [duplicate]

I have a regex to check if a string contains a specific word. It works as expected:

/\bword\b/.test('a long text with the desired word amongst others'); // true
/\bamong\b/.test('a long text with the desired word amongst others'); // false

But i need the word which is about to be checked in a variable. Using new RegExp does not work properly, it always returns false:

var myString = 'a long text with the desired word amongst others';

var myWord = 'word';
new RegExp('\b' + myWord + '\b').test(myString); // false

myWord = "among";
new RegExp('\b' + myWord + '\b').test(myString); // false

What is wrong here?

like image 649
Alp Avatar asked Apr 10 '12 17:04

Alp


1 Answers

var myWord = 'word';
new RegExp('\\b' + myWord + '\\b')

You need to double escape the \ when building a regex from a string.


This is because \ begins an escape sequence in a string literal, so it never makes it to the regex. By doing \\, you're including a literal '\' character in the string, which makes the regex /\bword\b/.

like image 141
user1106925 Avatar answered Oct 07 '22 19:10

user1106925