2

だから私は正規表現にあまり詳しくなく、いくつかのチュートリアルとそれがどのように機能するかを見ましたが、それでもわかりません!

とにかく、ここに私が持っている現在の文字列があります:^[a-zA-Z0-9]*$

次の文字を使用できるようにしたい: [ ] ( ) |(およびスペースを使用できるようにする)

編集: スペースの場合、次の文字列を言いましょう: 、正規表現を次[Something] Somethingのようにしても大丈夫ですか: ^[][a-zA-Z0-9 ]*$?

4

2 に答える 2

3

]文字クラスの閉じ角括弧 (のみ) をエスケープする必要があります。

^[[\]a-zA-Z0-9 ()|]*$

使用する必要がある他のすべての文字は、エスケープする必要はありません。


余談ですが、文字クラス内でエスケープする必要がある文字は次のとおりです。

  • ]閉じ括弧 (明らかに)
  • \バックスラッシュ (明らかに)
  • ^、ただし、ネガティブ クラス ( で始まるクラス) でない場合^のみ
  • -、ただし、文字クラスの最初または最後の文字でない場合のみ

他のすべての文字は、文字クラスで使用すると正規表現の意味を失います。たとえば、これは有効な文字クラスです。

[^^.*()|[\]\\-]

これは、「のいずれかを除く任意の文字」を意味し^.*()|[]\-ます

于 2012-09-13T00:50:51.120 に答える
2

]のように、文字クラスの先頭に含めます。

^[]a-zA-Z0-9]*$

残りはエスケープせずに挿入できます:

^[][()|a-zA-Z0-9]*$

もちろんキャラクタークラスについて話していない場合を除いて。

編集:開始ブラケットはブラケット式として解釈できるため、それをエスケープする方が安全な場合があります。

^[]\[()|a-zA-Z0-9]*$
于 2012-09-13T00:03:23.187 に答える