最初の正規表現
x = x.replace(/[{()}]/g, '');
y = y.replace(/[{()}]/g, '');
最初の正規表現/[{()}]/gでは、外側の角括弧[]が文字クラスを作成し、その内部で指定された文字の 1 つと一致します。この場合、文字{ ( ) }.
の外側には/regexp/( gglobal)修飾子があり、正規表現全体が可能な限り何度でも一致し、最初の一致だけではないことを意味します。
2 番目の正規表現
x = x.replace(/[\[\]']+/g, '');
y = y.replace(/[\[\]']+/g, '');
2番目の正規表現/[\[\]']+/gでは、外側の角括弧[]が文字クラスを作成し、その内部で指定された文字の1つと一致します. この場合、文字[ ] '.
角括弧は[文字クラス]内でエスケープされて表示されることに注意してください\[ \]。
+ quantifierを指定すると、前のルールone or moreが連続して一致するようになります。これは冗長であることに注意してください。機能する場合でも、これはあなたが望むものではありません。
の外側には/regularexpression/( gglobal)修飾子があり、正規表現全体が可能な限り何度でも一致し、最初の一致だけではないことを意味します。
推奨される解決策
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>