繁体   English   中英

使用正则表达式进行密码验证

[英]Using a Regular expression for password validation

我正在使用以下正则表达式编写我的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'。

在这方面可以帮助任何人。

谢谢,

纳伦德拉

这不能直接回答您的问题,但是与尝试使用正则表达式进行密码质量检查相比,它可能是更好的选择。

vt-password库是一个出色的Java库,可实现基于规则的密码质量检查。 除了计算字符/字符类之外,它还执行诸如检查字典,检查以前使用的密码,检查重复字符等操作。

(如果使用的是Spring,在Spring XML接线文件中配置密码规则对象非常简单。这使您可以在不更改代码的情况下调整规则。)

密码正则表达式模式

((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})

描述

(           # Start of group
  (?=.*\d)      #   must contains one digit from 0-9
  (?=.*[a-z])   #   must contains one lowercase characters
  (?=.*[A-Z])   #   must contains one uppercase characters
  (?=.*[@#$%])  #   must contains one special symbols in the list "@#$%"
     .          #     match anything with previous condition checking
       {6,20}   #        length at least 6 characters and maximum of 20 
)           # End of group

您的模式使用XML文档中禁止的字符。 为简单起见,将密码输入CDATA。

尝试这个

^.\*(\?:.{6,20})(\?:.\*[a-z].\*[a-z])(\?:.\*[A-Z])(\?:.\*[0-9]).\*$ 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM