1

ピリオドやダッシュなどの「特殊」文字を含む文字列に到達するまで機能する正規表現「^ [A0-Z9] + $」があります。

リスト:

UPPER
lower
UPPER lower
lower UPPER
TEST
test
UPPER2.2-1
UPPER2

与えます:

UPPER
TEST
UPPER2

英数字以外の文字も無視して UPPER2.2-1 も含めるように正規表現を取得するにはどうすればよいですか?

「リアルタイム」で表示するためのリンクがここにあります: http://www.rubular.com/r/ev23M7G1O3

これはMySQL REGEX用です

編集: 英数字以外のすべての文字 (スペースを含む) が必要であるとは指定しませんでしたが、ここで他の人の助けを借りて、次のようになりました: '^[AZ-0-9[:punct:][:space:] ]+$' これは何か問題がありますか?

4

4 に答える 4

4

試す

'^[A-Z0-9.-]+$'

グループに特殊文字を追加するだけで、オプションでそれらをエスケープできます。

さらに、をエスケープしないことを選択し-た場合は、範囲を区切ると解釈される可能性を回避するために、グループ化式の最初または最後に配置する必要があることに注意してください。


更新された質問に対して、空白以外のすべてが必要な場合は、次のようなグループを使用してみてください。

^[^ ]+$

スペースを除くすべてに一致します。

代わりに、必要なものがすべて空白でも小文字でもない場合は、次を使用することをお勧めします。

^[^ a-z]+$

ここで使用されている「トリック」は[、グループ式の開始後にカレット記号を追加することです。これは、一致の否定が必要であることを示しています。

このパターンに従って、この「トリック」を適用して、小文字以外のすべてを次のように取得することもできます

^[^a-z]+$

上記の3つのうちどれが必要かはよくわかりませんが、他に何もないとしても、これはキャラクタークラスで何ができるかを示す良い例になるはずです。

于 2012-11-21T20:37:44.423 に答える
3

私はあなたが(1つ?)大文字の単語の一致を探していると思います。単語はほとんど何でもあります。

^[^a-z\s]+$

...または、スペースを含むより多くの単語を許可したい場合は、おそらく

^[^a-z]+$
于 2012-11-21T21:04:35.543 に答える
1

.とを入れるだけです-。理論的には、括弧内にあるため、エスケープする必要はありませんが、エスケープする必要がある場合は、エスケープするように心がけています。

'^[A-Z0-9\.\-]+$'
于 2012-11-21T20:35:31.703 に答える
0

以下のように正規表現を試してください。

   '^[A0-Z0\\.\\-]+$'
于 2012-11-21T20:42:38.837 に答える