两个正则表达式模式之间有什么区别
我试图在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 -