我正在使用以下正则表达式我的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: Value 'narendra1A' is not facet-valid with respect to pattern '^.*(\?=.{6,20})(\?=.*[a-z].*[a-z])(\?=.*[A-Z])(\?=.*[0-9]).*$' for type '#AnonType_passwordcreateUser'.
任何人都可以在这方面提供帮助吗?
谢谢
纳伦德拉
最佳答案
这并不能直接回答您的问题,但它对您来说可能是比尝试使用正则表达式进行密码质量检查更好的选择。
vt-password库是一个优秀的Java库,它实现了基于规则的密码质量检查。除了计算字符/字符类之外,它还执行诸如检查字典、检查以前使用的密码、检查重复字符等操作。
(如果您使用 Spring,在 Spring XML 接线文件中配置密码规则对象非常简单。这允许您在不更改代码的情况下调整规则。)
关于java - 使用正则表达式进行密码验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4386625/