我在替换功能上停留了一段时间。基本上它可以工作,但它不能用括号()
。
我准备了一个小提琴:
标记:
<span>Textarea / Longtest</span><br>
<input id="textarea_1" type="text" size="30" maxlength="30" value="12()1212">
<br><br><br>
<span>String to replace</span><br>
<input id="textarea_2" type="text" size="30" maxlength="30"><br>
<span>Replacing String</span><br>
<input id="textarea_3" type="text" size="30" maxlength="30">
<input type="button" value="execute" onclick="replace()">
使用Javascript:
function replace(){
var longtext = document.getElementById('textarea_1').value
var StringToReplace = document.getElementById('textarea_2').value
var UserReplacingString = document.getElementById('textarea_3').value;
var oldWordRegEx = new RegExp(StringToReplace,'g');
var result = longtext.replace(oldWordRegEx,UserReplacingString);
alert(result);
}
因此,请在第二个框中输入1
,在第三个框中输入随机值。我的JavaScript代码会自动替换第一个框中的所有1's
,但不会替换(
或)
。
有人可以帮我解决这个问题吗?
我必须使用纯JavaScript(OnClick
)而不是jQuery或类似的。
答案 0 :(得分:2)
(
和)
是正则表达式的特殊字符。你需要逃脱它们。与\(\)
一起使用的代码可以使用。
答案 1 :(得分:2)
某些字符在正则表达式中具有特殊含义,因此您必须将它们转义。
根据this answer,您必须转义字符.^$*+?()[{\|
。
要转义,请在其前添加\
,但请注意,您还必须在字符串中转义\
,因此您需要\\
:
StringToReplace.replace(/[.^$*+?()[{\|]/g, '\\$&');