我想通过使用用户输入值来替换文本,但是对于下面的脚本,替换时点和逗号出现故障。我尝试了 (/\x/)
方法,但它不起作用,可能是因为它是一个值。那么,如何才能更准确地执行输出呢?
function myFunction() {
var str = document.getElementById("text").value;
var x = new RegExp(document.getElementById("x").value, "g");
var y = document.getElementById("y").value;
var txt = str.replace(x, y);
document.getElementById("newText").innerHTML = txt;
}
function reset() {
document.getElementById("text").value = "";
}
例子:
text = ..........a.a.a..a..a..aaaaaa..a.a.
x = ..a
y = B
output = ........B.BBBBBaaB.a.
但输出应该是
........B.a.aBBBaaaaaB.a.
(对不起,这个不专业的例子……)
我刚刚开始学习 JS 而不是专业人士,我正在尝试使用 JS 制作一个替换网页,就像在 MS 记事本中一样,您可以在其中按 ctrl+H 并替换任何单词或字母.
最佳答案
你正在寻找 RegExp.escape
,真不幸 - JavaScript 技术委员会的聪明人决定 postpone its inclusion在标准中,因为您或其他任何人可能永远不会遇到的边缘情况。
if(!RegExp.escape){
RegExp.escape = function(s){
return String(s).replace(/[\\^$*+?.()|[\]{}]/g, '\\$&');
};
}
然后,您可以在一个值上调用它,它会转义它以便在 new RegExp
中使用:
var raw = document.getElementById("x").value;
var x = new RegExp(RegExp.escape(raw), "g");
关于Javascript 字符串 replace() 方法因点和逗号而出现故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34117030/