两个正则表达式模式之间有什么区别

我试图在Web应用程序中validation公司名称并具有此正则表达式模式

^[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-

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

编辑添加:以上猜测似乎是正确的,至少对于.NET的正则表达式引擎:

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

这可能是因为第一个字符组中的“ – ”

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

Escaspe它,它应该没问题。

请记住,当在角色组内部时,您必须逃脱的角色变为

 backslash \ caret ^ hyphen -