Заменить функцию не работает с скобками ()

Я застрял на некоторое время на функции замены. в основном это работает, но это не работает с скобками (),

Я приготовил для этого скрипку:

http://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 ответа

( а также ) специальные символы для регулярных выражений. Вам нужно сбежать от них. Ваш код используется с \(\) вместо этого работает.

Некоторые символы имеют особое значение в регулярных выражениях, поэтому вы должны избегать их.

Согласно этому ответу, вы должны убежать от персонажей .^$*+?()[{\|,

Чтобы убежать, добавьте \ до них, но обратите внимание, вы также должны бежать \ внутри строки, так что вам нужно \\:

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

демонстрация

Другие вопросы по тегам