var a = 'toto titi (should be removed) 5'.replace(/\(.*\)|\[.*\]|[^a-zA-Z0-9 ]|tata|tutu|tyty/gi, '!$!');
var b = 'toto titi (should be removed) 5'.replace(new RegExp('\(.*\)|\[.*\]|[^a-zA-Z0-9 ]|tata|tutu|tyty', 'gi'), '!$!');
console.log(a);
console.log(b);
I want to replace by space every char which is not a number or a letter or a space and chars which are beetween () and [].
I have 2 same sentences, and I use the same pattern. The only one difference is that I use the /regex/flags
syntax for var a
and the object syntax new Regex('regex','flags')
for var b
.
However the result is not the same for a and for b.
Output is :
toto titi !$! 5 //a (it's the expected result)
!$!!$! //b
I don't understand why. Could you explain me ? I have to use the object syntax because I need to build my regex with variables.
In strings, a backslash (
\
) is used for escaping special characters, such as in\\
,\'
,\"
. In a regex, backslashes are also used for escaping, such as a literal\(
or\.
.This means that when creating a regex from a string, you need to escape backslashes in the string as well. So you would do:
Using this it gives the expected result.