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

-是字符类中的一个特殊字符,因此是模棱两可的,并且可能得到and和 and.-0-9的含义,因此本质上是字符。.0-9./09-

要在字符类中包含连字符减号,您必须将其转义或将其放置在字符类的开头或结尾(这是您在第二个正则表达式中所做的,可能是偶然的)。

编辑添加:以上猜测似乎是正确的,至少对于.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 回答