Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js NodeJS变量在正则表达式中具有_Node.js - Fatal编程技术网

Node.js NodeJS变量在正则表达式中具有

Node.js NodeJS变量在正则表达式中具有,node.js,Node.js,如何在正则表达式中合并find变量 var find = 'de'; var phrase = 'abcdefgh'; var replace = '45'; var newString = phrase.replace(/de/g, replace) i、 例如:var newString=phrase.replace(/find/g,replace) 预期:短语='abc45fgh'您可以使用new RegExp() monkeyinsight的答案很好,但还有一些事情你应该知道。您需要

如何在正则表达式中合并
find
变量

var find = 'de';
var phrase = 'abcdefgh';
var replace = '45';

var newString = phrase.replace(/de/g, replace)
i、 例如:var newString=phrase.replace(/
find
/g,replace)


预期:
短语='abc45fgh'

您可以使用
new RegExp()


monkeyinsight的答案很好,但还有一些事情你应该知道。您需要小心,这取决于
find
的构造方式。假设您有如下内容:

var name = 'Paul Oldridge (paulpro)';
var find = '/foo/(' + name + ')/bar';
然后,您需要决定是否要为regex转义它,以便它与字符串
/foo/Paul Oldridge(paulpro)/bar完全匹配,或者是否希望它作为正则表达式本身计算
name
,在这种情况下
(paulpro)
将被视为一个捕获组,它将匹配字符串
/foo/Paul Oldridge paulpro/bar
,而
paulpro
周围没有括号

在许多情况下,您可能希望嵌入子表达式,但更常见的情况是希望与给定的字符串完全匹配。那样的话你可以。在节点中,您可以使用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'
然后将其传递给RegExp构造函数,如monkeyinsight所示:

new RegExp(find, 'g')

可能重复的问题是不同的,答案是相似的,但无论如何谢谢我错过了这个话题。
new RegExp(find, 'g')