我正在尝试在一个Web应用程序中验证公司名称,并使用了这个正则表达式模式:
^[a-zA-Z_'\\s,;.-0-9]{1,100}$
以上模式会拒绝值为10004 Estates Limited的输入。
但如果我将0-9提前,模式变成:
^[a-zA-Z0-9_'\\s,;.-]{1,100}$
那么它就可以工作了。我是一个新手,对于正则表达式和模式不太熟悉,但我知道我应该更多地使用它,所以我希望能够明确这一点。谢谢。
-
是一个特殊字符,因此.-0-9
含义不明确,可能会被理解为.
到0
和-
到9
的范围,实际上是包括了字符./09-
。PS> [char[]](32..127) -match '[a-zA-Z_''\s,;.-0-9]'
'
,
-
.
/
0
9
;
A
...
^[a-zA-Z_'\s,;.\-0-9]{1,100}$
将其转义后就没问题了。
记住,在字符组内部,您需要转义的字符变成
backslash \
caret ^
hyphen -
^
。虽然我还没有看到有人犯这个错误。中间的连字号更常见。 - Joey