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

时间:2015-12-06 11:42:13

标签: javascript

我想使用用户输入值替换文本,但是对于下面的脚本,点和逗号在替换时出现故障。我尝试了(/\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 并替换任何单词或者信。

2 个答案:

答案 0 :(得分:1)

你正在寻找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");

答案 1 :(得分:0)

你想要这个正则表达式 - [。] {2} [a]或[。] [。] [a]。

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