2014-03-31 83 views
0

我堅持了一段時間的替換功能。基本上它工作,但它不支持括號()替換功能不用括號()工作

我已經準備了小提琴爲:

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

THX非常非常快的回覆! – user3482484

2

有些字符在正則表達式中有特殊含義,所以你必須逃避它們。根據this answer,你必須轉義字符.^$*+?()[{\|

逃跑,他們之前添加\,但要注意,你還必須逃脫\在字符串中,所以你需要\\

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

Demo

+0

thx這正是我想要的!很快...! – user3482484

+0

@ user3482484查看編輯答案,我首先提出的轉義方法是不正確的。 – Oriol

+0

THX現在適用於我所有的情況!特別thx給你!....偉大的社區! – user3482484