【发布时间】:2011-05-22 03:49:55
【问题描述】:
我正在使用以下正则表达式我的 java 代码。
^.*(?=.{6,20})(?=.*[a-z].*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$
当我尝试在 xml 中使用相同的
^.\*(\?=.{6,20})(\?=.\*[a-z].\*[a-z])(\?=.\*[A-Z])(\?=.\*[0-9]).\*$
它不工作。它显示异常如下。
java.lang.IllegalArgumentException: cvc-pattern-valid:值“narendra1A” 不是方面有效的 图案 '^.*(\?=.{6,20})(\?=.*[az].*[az])(\?=.*[AZ])(\?=.*[0-9 ]).*$' 表示类型 '#AnonType_passwordcreateUser'。
任何人都可以在这方面提供帮助。
谢谢,
纳伦德拉
【问题讨论】:
-
与问题无关,但您应该删除
^之后的第一个.*。这是不必要的,并且使您的正则表达式非常低效。此外,如果您认为您将密码长度限制为 6-20 个字符,那么您不是。一个 100 个字符的字符串可以很好地通过这个正则表达式。 -
为什么有20个字符的上限?
-
@Gumbo:没关系,如果你仔细查看正则表达式,任何超过 5 个字符的字符串都会通过 :)
标签: java xml regex validation schema