在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 */
}
所述([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更多的提示如何简化这种正则表达式。