Заменить функцию не работает с скобками ()
Я застрял на некоторое время на функции замены. в основном это работает, но это не работает с скобками ()
,
Я приготовил для этого скрипку:
Разметка:
<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, '\\$&');