我有一个模式,它是根据数组动态创建的字符串。我相信我需要使用一个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');
我记得在进行搜索时使用带有字符串的RegExp,这很有效。
编辑添加了额外的反斜杠,但仍无效。
答案 0 :(得分:0)
使用$1
插入匹配项而不是$&
。
尝试使用代码段
var pattern = "(?:\()(iZeroPosSensor|iZeroPosSensorConnected)(?:\))"
var subst = "(<span class='observer'>$&</span>)"
var regex = new RegExp(pattern, 'g');
var text="SOMETHINGiZeroPosSensorTest";
console.log(text.replace(regex,subst));
&#13;
答案 1 :(得分:0)
您可以使用String.prototype.replace()第一个参数regex
,第二个参数使用函数来格式化字符串结果:
var pattern = /iZeroPosSensor(?:Connected)?/,
regex = new RegExp(pattern, 'g'),
text ='Some demo string with iZeroPosSensor and iZeroPosSensorConnected for testing...',
result = text.replace(regex, str => `(<span class="observer">${str}</span>)`);
console.log(result);
答案 2 :(得分:0)
也许你需要这个?
var pattern = '(?:\\()(iZeroPosSensor(?:Connected)?)(?:\\))',
regex = new RegExp( pattern, 'g' ),
subst = "(<span class='observer'>$1</span>)",
result = "(iZeroPosSensorConnected)".replace( regex, subst );
console.log(result);
&#13;