我需要用变量出现替换字符串中的出现,然后重新构造字符串。我用javascript想出了一些正则表达式魔法,它应该是一个快照。然而,在经历了大量的烦恼和敲打之后,我向他的堆栈溢出的兄弟姐妹们伸出了敏锐的目光。
我正在尝试删除[[XYZ]],如下面的代码所示:
div(ng-if="item.end < date")
但是,当我运行它时返回:
<!DOCTYPE html>
<html>
<body>
<p>Click the button to replace and switch:</p>
<p id="demo">{
"[[XYZ]]-ENGINES": "L300",
"[[XYZ]]-INTERIOR": "BURGCOMDDD",
"[[XYZ]]-BASEBOAT": "PUTT"
}
</p>
<button onclick="myFunction()">Try it</button>
<script>
function replaceAll(string, find, replace) {
return string.replace(new RegExp(find, 'g'), replace);
}
function myFunction() {
var str = document.getElementById("demo").innerHTML;
var replaceString = "\"[[XYZ]]?-*(.+)\": \"([A-Z0-9]+)\"?,*"
var replacementString = '$1/$2 = true,';
newstr = replaceAll(str, replaceString, replacementString)
alert(newstr)
}
</script>
</body>
</html>
应该是:
{
[XYZ]]-ENGINES/L300 = true,
[XYZ]]-INTERIOR/BURGCOMDDD = true,
[XYZ]]-BASEBOAT/PUTT = true,
}
瓦?
答案 0 :(得分:1)
您必须使用[
转义\
。但是等等,因为你使用字符串而不是正则表达式字面值,你必须使用另一个\
转义\
:
'"[[XYZ]]-ENGINES": "L300"'.replace(
new RegExp("\"\\[\\[XYZ]]?-*(.+)\": \"([A-Z0-9]+)\"?,*", 'g'),
'$1/$2 = true,'
);
答案 1 :(得分:0)
尝试使用
function myFunction() {
var str = document.getElementById("demo").innerHTML;
var newstr = str.replace(/\[\[XYZ\]\]-/g, "");
alert(newstr);
}
您需要转义特殊字符,例如[
或]
我删除了你的功能,我希望没问题。
答案 2 :(得分:0)
您需要转义[
和]
:
var replaceString = "\"\[\[XYZ\]\]?-*(.+)\": \"([A-Z0-9]+)\"?,*"