小编典典

两种regex模式有什么区别

java

我试图在Web应用程序中验证公司名称,并且使用此正则表达式模式

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

上述模式将拒绝值 10004 Estates Limited

但是如果我提出0-9,那么模式变成

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

然后就可以了。正则表达式和模式是新手,但我知道我应该使用更多它,因此我想对此进行澄清。谢谢。


阅读 221

收藏
2020-11-26

共1个答案

小编典典

-是字符类中的一个特殊字符,因此.-0-9是歧义的,可能会.赋予0-和含义9,因此本质上是字符./09-

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

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

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

'
,
-
.
/
0
9
;
A
...
2020-11-26