带有Regexexpression式的NodeJSvariables

如何在一个正则expression式中包含findvariables?

 var find = 'de'; var phrase = 'abcdefgh'; var replace = '45'; var newString = phrase.replace(/de/g, replace) 

即: var newString = phrase.replace(/ find / g,replace)

预期: phrase = 'abc45fgh';

monkeyinsight的回答很好,但是还有别的你应该知道的。 你需要小心,取决于如何构build。 假设你有这样的东西:

 var name = 'Paul Oldridge (paulpro)'; var find = '/foo/(' + name + ')/bar'; 

然后,您需要决定是否要为正则expression式转义它,以便它完全匹配string/foo/Paul Oldridge (paulpro)/bar或者如果您希望它作为正则expression式本身计算name ,在这种情况下(paulpro)将被视为一个捕获组,它将匹配string/foo/Paul Oldridge paulpro/bar而不包括paulpro的括号。

在很多情况下,你可能想要embedded一个子expression式,但是更常见的情况是你想要完全按照给定的方式匹配string。 在这种情况下,你可以逃避正则expression式的string 。 在节点中,您可以使用npm安装模块regex-quote 。 你会这样使用它:

 var regexp_quote = require("regexp-quote"); var name = 'Paul Oldridge (paulpro)'; var find = '/foo/(' + regexp_quote( name ) + ')/bar'; 

哪个会正确地转义括号,以便find变成:

 '/foo/(Paul Oldridge \(paulpro\))/bar' 

您可以像monkeyinsight所显示的那样将其传递给RegExp的构造函数:

 new RegExp(find, 'g') 

您可以使用new RegExp()

 var newString = phrase.replace(new RegExp(find, 'g'), replace);