Java 验证密码是否不存在';t包含3+;名称中的连续字符
我需要在Java中进行以下密码验证Java 验证密码是否不存在';t包含3+;名称中的连续字符,java,regex,validation,passwords,Java,Regex,Validation,Passwords,我需要在Java中进行以下密码验证 长度必须至少为8个字符 必须包含至少1个数字 必须包含至少1个大写字母 必须包含至少1个小写字母 不能包含您的全名或用户名中的3个或更多连续字符(例如,如果您的名字是Will,则您不能使用密码Stiller458) 我有前4分,最后一分怎么办 目前我有: String pattern = "^(?=.*[^a-zA-Z])(?=.*[a-z])(?=.*[A-Z])\\S{8,}$"; boolean passwordValidation = origin
- 长度必须至少为8个字符
- 必须包含至少1个数字
- 必须包含至少1个大写字母
- 必须包含至少1个小写字母
- 不能包含您的全名或用户名中的3个或更多连续字符(例如,如果您的名字是
,则您不能使用密码Will
)Stiller458
String pattern = "^(?=.*[^a-zA-Z])(?=.*[a-z])(?=.*[A-Z])\\S{8,}$";
boolean passwordValidation = originalPassword.matches(pattern);
最后一点不是你用正则表达式做的事情。循环遍历名称,并检查密码 正则表达式擅长于模式,而不是解析。无论如何,您必须使用循环遍历名称。对于您的1,2,3,4案例
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z\d]{8,}$
你的第五个案子
public boolean isValid(final String userName,final String password)
{
for(int i=0;(i+2)<userName.length();i++)
if(password.indexof(userName.substring(i,i+2))!=-1)
return false;
return true;
}
public boolean有效(最终字符串用户名、最终字符串密码)
{
对于(int i=0;(i+2)你必须用正则表达式来做这件事吗?最后一点可能是不可能的。谁让你用正则表达式来做这件事的?你应该给他一块唐纳特!谢谢大家,我一直在和那些不使用正则表达式的人斗争,他们坚持这是可能的,当我告诉他们把正则表达式给我时,他们刚刚走开了。一个数字,[^a-zA-Z]
应该是[0-9]
。你可能想要
而不是\\S
。我得到了一个“java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:8”,知道为什么吗?@Vivek oops.现在检查编辑..而不是使用userName.length()
我使用了password.length()
.small errorTnx,我还将if(password.indexof(userName.substring(I,I+2))!=-1)更改为if(password.indexof(userName.substring(I,I+3))!=-1)以满足包含3或more@Vivek检查3与检查4,5,6,7…一样好,所以您只需要检查3个字符。。