Javascript 如何使用RegExp在replace中将动态创建的模式用作字符串?

Javascript 如何使用RegExp在replace中将动态创建的模式用作字符串?,javascript,regex,replace,Javascript,Regex,Replace,我有一个模式,它是根据数组动态创建的字符串。我相信我需要使用一个RegExp对象来让它工作,但它也不会。控制台日志中没有错误,因此对象的使用是正确的 var pattern = "(?:\\()(iZeroPosSensor|iZeroPosSensorConnected)(?:\\))" // does not work //var pattern = /(?:\()(iZeroPosSensor|iZeroPosSensorConnected)(?:\))/ // works var s

我有一个模式,它是根据数组动态创建的字符串。我相信我需要使用一个RegExp对象来让它工作,但它也不会。控制台日志中没有错误,因此对象的使用是正确的

var pattern = "(?:\\()(iZeroPosSensor|iZeroPosSensorConnected)(?:\\))"   // does not work
//var pattern = /(?:\()(iZeroPosSensor|iZeroPosSensorConnected)(?:\))/ // works
var subst = "(<span class='observer'>$1</span>)"
var regex = new RegExp(pattern, 'g');
var pattern=“(?:\\()(iZeroPosSensor | iZeroPosSensorConnected)(?:\\)”//不工作
//变量模式=/(?:\()(iZeroPosSensor | iZeroPosSensorConnected)(?:\)///有效
var subst=“($1)”
var regex=新的RegExp(模式“g”);
我记得在进行搜索时使用带有字符串的RegExp,这很有效


编辑:添加了额外的反斜杠,仍然不起作用。

使用
$插入匹配项,而不是
$1

试试这个片段

var pattern=“(?:\()(iZeroPosSensor | iZeroPosSensorConnected)(?:\)”
var subst=“($&)”
var regex=新的RegExp(模式“g”);
var text=“somethingingZeroPossensortest”;
log(text.replace(regex,subst))
您可以使用第一个参数
regex
,第二个参数使用函数格式化字符串结果:

var模式=/iZeroPosSensor(?:已连接)?/,
regex=新的RegExp(模式“g”),
text='iZeroPosSensor和iZeroPosSensor已连接以进行测试的某些演示字符串…',
result=text.replace(regex,str=>`(${str})`);
控制台日志(结果)也许你需要这个

var模式='(?:\\()(iZeroPosSensor(?:已连接)?)(?:\\),
regex=新的RegExp(模式“g”),
subst=“($1)”,
结果=“(izeroposensorconnected)”。替换(regex,subst);

控制台日志(结果)
如果使用字符串提供
RegExp
,则需要使用正确的转义。例如
/\d*/
变成
'\\d*'
。你知道,在弦上是不同的。有一个
\(
应该是
\\(
它应该是有效的。检查你的代码,可能会混淆变量
模式
正则表达式