Javascript字符串replace()方法对句点和逗号出现故障

Javascript string replace() method malfunctioning for dots and commas

本文关键字:故障 句点 replace 字符串 方法 Javascript      更新时间:2023-09-26

我想通过使用用户输入值来替换文本,但对于以下脚本,点和逗号在替换时出现故障。我尝试了(/'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技术委员会的聪明人决定推迟将其纳入标准,因为您或其他人可能永远不会遇到这种边缘情况。

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");

您想要此正则表达式-[.]{2}[a]或[.][.][a].

必须有两个带尾随a的点。它应该有3个字符。