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