替换功能不适用于括号()

时间:2014-03-31 19:20:56

标签: javascript replace brackets

我在替换功能上停留了一段时间。基本上它可以工作,但它不能用括号()

我准备了一个小提琴:

jsfiddle.net/99xPY/3/

标记:

<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或类似的。

2 个答案:

答案 0 :(得分:2)

()是正则表达式的特殊字符。你需要逃脱它们。与\(\)一起使用的代码可以使用。

答案 1 :(得分:2)

某些字符在正则表达式中具有特殊含义,因此您必须将它们转义。

根据this answer,您必须转义字符.^$*+?()[{\|

要转义,请在其前添加\,但请注意,您还必须在字符串中转义\,因此您需要\\

StringToReplace.replace(/[.^$*+?()[{\|]/g, '\\$&');

Demo