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.