密码验证问题的JAVA正则表达式
我有一个用于密码验证的regexp( (带有额外的特殊字符) 这将返回密码验证问题的JAVA正则表达式,java,regex,Java,Regex,我有一个用于密码验证的regexp( (带有额外的特殊字符) 这将返回false 然而,如果我说 "Xyz.123".matches(pattern); "Xyz.123$".matches(pattern); 这将返回true “.”在我的情况下不是有效的特殊字符。但是如果我的密码有一个有效的特殊字符和“.”,它将返回true您有\\S+,这意味着“任何非空格字符”。满足这一要求。您还需要$来满足第三个伪条件(lookahead)不在其中,但$在其中 编辑:如果您根本不想要任何句点,
false
然而,如果我说
"Xyz.123".matches(pattern);
"Xyz.123$".matches(pattern);
这将返回true
“.”在我的情况下不是有效的特殊字符。但是如果我的密码有一个有效的特殊字符和“.”,它将返回
true
您有\\S+
,这意味着“任何非空格字符”。
满足这一要求。您还需要$
来满足第三个伪条件(lookahead)<代码>不在其中,但$
在其中
编辑:如果您根本不想要任何句点,出于好奇,将最后一个伪条件更改为
(?=[^\\s.]+$)
,从正则表达式末尾删除$
。@destroy$
不需要在字符组内转义,并且^
只有在紧跟[
我对正则表达式非常陌生。请您提供正则表达式或实际正则表达式中的更正。Thanks@Shoaib我不明白问题是什么。你不想允许句点吗?1.是的,我不想允许句点。@Shoaib将(?=\\S+$)
更改为(?=[^\S.]+$)
1.是的,我不想允许句点。2.如果用户在其密码中输入句点,则正则表达式与他的密码不匹配,并返回“FALSE”,这有助于我通知用户重新输入密码。3.但是,问题是,如果用户输入带有句点的密码,以及一些其他特殊字符(在我的正则表达式中允许),表示用户输入密码“Password@123.321“然后正则表达式与新密码匹配并返回TRUE。这不是预期的行为,因为我的正则表达式中没有句点。谢谢。”
"Xyz.123$".matches(pattern);