我在使用regexp替换字符串中的html代码时遇到问题。我曾尝试使用匹配的在线正则表达式测试仪,但有些东西导致我可以更换。 $ {ProductEAN}是我想要的替代品。知道什么是错的吗?
字符串在这里:
<label for="ProductEAN" id="ProductEAN" class="col-sm-3 control-label">${ProductEAN}</label>
Javascript代码:
let strToReplace = 'ProductEAN';
let reg = new RegExp('/(\$\{'+strToReplace+'\})/','g')
str.replace(reg,'some text');
答案 0 :(得分:2)
RegExp
构造函数在表达式周围不需要斜杠(/.../
),仅适用于正则表达式文字。当你使用反斜杠转义字符时,它们会在传递给构造函数的字符串中转义,但是将非转义传递给实际的正则表达式。他们需要双重逃脱。因此,将行更改为:
let reg = new RegExp('\\$\\{'+strToReplace+'\\}','g');
答案 1 :(得分:0)
您需要正确转义反斜杠
reg = new RegExp('\\$\\{' + strToReplace + '\\}', 'g');
和替换字符串的赋值。
newString = str.replace(reg,'some text');
var element = document.getElementById('ProductEAN'),
strToReplace = 'ProductEAN',
reg = new RegExp('\\$\\{' + strToReplace + '\\}', 'g');
element.innerHTML = element.innerHTML.replace(reg,'some text');
<label for="ProductEAN" id="ProductEAN" class="col-sm-3 control-label">${ProductEAN}</label>
答案 2 :(得分:0)
这应该这样做:
var str = '<label for="ProductEAN" id="ProductEAN" class="col-sm-3 control-label">${ProductEAN}</label>';
var strToReplace = 'ProductEAN';
var reg = new RegExp('(\\${'+strToReplace+'})','g')
str.replace(reg,'some text');
答案 3 :(得分:-1)
试试这个:
new RegExp('\$\{' + strToReplace + '\}','g')
当使用RegExp调用时,您不必将/&#9进入。您也不应该使用()。
此处有更多信息:http://www.javascriptkit.com/jsref/regexp.shtml
另外,你可以摆脱这些让步。他们不需要。