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