在Java中使用RegEx尝试生成用户名和密码:
字母,允许:a-z,A-Z,0-9和@#$%!
用户名,至少1个小写字母,至少1个大写字母,字母,5-13 ch
密码,至少一个小写字母,至少一个大写字母,至少一个数字,字母,5-13 ch
但是每次运行时,我的测试用户名:aA0 @!并测试密码:aA0 @!继续显示我的Toast消息,这表明凭据无效。
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 */
}
答案 0 :(得分: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。