Javascript替换正则表达式不起作用

时间:2016-07-15 19:26:49

标签: javascript regex

我在使用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');

4 个答案:

答案 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

另外,你可以摆脱这些让步。他们不需要。