3

Web アプリケーションで会社名を検証しようとしていて、この正規表現パターンがありました

^[a-zA-Z_'\\s,;.-0-9]{1,100}$

上記のパターンは、値10004 Estates Limitedを拒否します。

しかし、0-9 を進めると、パターンは次のようになります。

^[a-zA-Z0-9_'\\s,;.-]{1,100}$

それは動作します。正規表現とパターンは初めてですが、もっと使用する必要があることはわかっているので、これについて明確にしたいと思います。ありがとう。

4

2 に答える 2

7

-は文字クラスの特殊文字であるため、.-0-9あいまいであり、おそらくおよびおよびに意味.を持たせるため、本質的に文字.0-9./09-

文字クラスにハイフンマイナスを含めるには、それをエスケープするか、文字クラスの先頭または末尾に配置する必要があります (これは、おそらく偶然に、2 番目の正規表現で行っていることです)。

追加するように編集: 少なくとも .NET の正規表現エンジンの場合、上記の推測は正しいようです:

PS> [char[]](32..127) -match '[a-zA-Z_''\s,;.-0-9]'

'
,
-
.
/
0
9
;
A
...
于 2012-05-23T10:39:29.797 に答える
2

最初の文字グループ内の「-」が原因である可能性があります

^[a-zA-Z_'\s,;.\-0-9]{1,100}$

エスケープすれば問題ないはずです。

文字グループ内では、エスケープする必要がある文字は次のようになることを覚えておいてください

backslash \
caret ^
hyphen -
于 2012-05-23T10:39:46.770 に答える