Ответ 1
Первое регулярное выражение
x = x.replace(/[{()}]/g, '');
y = y.replace(/[{()}]/g, '');
В вашем первом регулярном выражении /[{()}]/g
внешние квадратные скобки []
создают класс символов, он будет соответствовать одному из символов, указанных внутри него. В этом случае символы {
(
)
}
.
Помимо /regexp/
у вас есть g
(глобальный) модификатор modifier, означающий, что все ваше регулярное выражение будет совпадать столько раз, сколько может, и оно не будет просто соответствовать первому совпадению.
Второе регулярное выражение
x = x.replace(/[\[\]']+/g, '');
y = y.replace(/[\[\]']+/g, '');
Во втором регулярном выражении /[\[\]']+/g
внешние квадратные скобки []
создают класс символов, он будет соответствовать одному из символов, указанных внутри него. В этом случае символы [
]
'
.
Обратите внимание, что квадратные скобки внутри [класса символов] отображаются как \[
\]
.
После того как вы укажете квантификатор +
quantifier, он сделает предыдущее правило совпадающим one or more
раз подряд. Обратите внимание, что это избыточно, даже если это работает, это не совсем то, что вы хотите.
Помимо /regularexpression/
у вас есть g
(глобальный) модификатор modifier, означающий, что все ваше регулярное выражение будет совпадать столько раз, сколько может, и оно не будет просто соответствовать первому совпадению.
Предлагаемое решение
run1.onclick = function() {
//removes "(" and ")"
output1.innerHTML = input1.value.replace(/[()]/g, '');
}
run2.onclick = function() {
//removes (){}[]
output2.innerHTML = input2.value.replace(/[\])}[{(]/g, '');
}
<p>Remove ()</p>
<input id="input1" type="text" value="(123) 1234-1234">
<input id="run1" type="button" value="run">
<span id="output1"></span>
<hr>
<p>Remove ()[]{}</p>
<input id="input2" type="text" value="Hello (this) is [] a {{test}}!">
<input id="run2" type="button" value="run">
<span id="output2"></span>