正则表达式为典型的用户名和密码

问题描述 投票:0回答:1

在Java中使用正则表达式我试图生成一个用户名和密码:

字母表,可以:A-Z,A-Z,0-9和@#$%!

用户名,至少一个小写,至少一个大写字母,字母,5-13 CH

密码,至少一个小写,至少一个大写,至少一个数字,字母,5-13 CH

但每次我跑的时候,我的测试用户名:@ AA0!和测试密码:AA0 @!继续显示我的烤面包的消息,这表明该证书是无效的。

Pattern uPattern = Pattern.compile("^((?=.*[a-z])(?=.*[A-Z])([a-zA-Z0-9@#$%!]).{5,13})$");
Pattern pPattern = Pattern.compile("^((?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@#$%!])([a-zA-Z0-9@#$%!]).{5,13})$");

if(!uPattern.matcher(mUserName.getText().toString()).matches()
 || !pPattern.matcher(mPassWord.getText().toString()).matches()){
 /* and if the patterns don't match, display a Toast message */
}
java regex
1个回答
1
投票

所述([a-zA-Z0-9@#$%!]).{5,13}消耗您正则表达式的一部分,是指在允许的串长度为6至14 aA0@!只有5个字符长。

有两种出路取决于其他条件:

  • 如果只允许字符包括字母,数字和@#$%!,与([a-zA-Z0-9@#$%!]).{5,13}取代[a-zA-Z0-9@#$%!]{5,13}
  • 如果你想允许任何字符,但换行字符,与([a-zA-Z0-9@#$%!]).{5,13}替换.{5,13}(也就是说,除去捕获组)。

Lookahead Example: Simple Password Validation更多的提示如何简化这种正则表达式。

© www.soinside.com 2019 - 2024. All rights reserved.