26
  x = x.replace(/[{()}]/g, '');
  y = y.replace(/[{()}]/g, '');

  x = x.replace(/[\[\]']+/g, '');
  y = y.replace(/[\[\]']+/g, '');

最初のブロックが中かっこを削除し、2 番目のコード ブロックが通常のかっこを削除することを理解しました。今括弧を削除したい..誰かが私に方法を教えてもらえますか?

グーグルで上記のコードを取得しました..しかし、「どのように」彼らがこれを思いついたのかわかりません。誰か説明してもらえますか? ありがとう

4

2 に答える 2

101

最初の正規表現

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>

于 2012-06-01T04:31:12.110 に答える