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

标签 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 并替换任何单词或字母.

最佳答案

你正在寻找 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/

相关文章:

javascript - Mustache - 以使用相同名称的嵌套部分为条件

javascript - 无法从外部js访问getElementsByTagName

javascript - javascript中如何将变量从一个函数传递到另一个函数

javascript - 使用 reactjs 实现 Facebook API 登录

javascript - 将鼠标悬停在上方时下拉 div

javascript - jQuery 缩小背景图像但保持高度

javascript - 对 "hasOwnProperty"感到困惑,无法检测是否存在函数

javascript - 我可以覆盖 jQueryUI 自动完成中的选择选项吗

javascript - 在 Google 脚本 If 语句中运行 RegEx

javascript - React.js 如何使用 getElementById 方法获取 props 中的 id?