Java 带有字符、数字和标点符号的密码正则表达式
我需要一个正则表达式作为密码,条件如下 1。密码必须至少包含7个但不超过10个字符。 2。密码必须至少包含一个大写字母和一个小写字母 大小写字母、一位数字和标点符号(如a-z、, A-Z,0-9,!@#$%^&*()|+| ~-=`{}[]:“;”?,./) 我试着使用:Java 带有字符、数字和标点符号的密码正则表达式,java,regex,Java,Regex,我需要一个正则表达式作为密码,条件如下 1。密码必须至少包含7个但不超过10个字符。 2。密码必须至少包含一个大写字母和一个小写字母 大小写字母、一位数字和标点符号(如a-z、, A-Z,0-9,!@#$%^&*()|+| ~-=`{}[]:“;”?,./) 我试着使用:^(?=.{7,10})(?=.[a-zA-Z])(?=.*\d)(?=.[!@$%^&*(?=.[!@@$%^&()。+.~={}:“;”?,./-[])$` 但是,当我在http://regex101.com/ 标点符号解释
^(?=.{7,10})(?=.[a-zA-Z])(?=.*\d)(?=.[!@$%^&*(?=.[!@@$%^&()。+.~=
{}:“;”?,./-[])$`
但是,当我在http://regex101.com/
标点符号解释似乎有问题,可以解释一下原因并帮助我完成这项工作。我疯狂地写这个正则表达式: 为了便于阅读,只需使用
@#
作为特殊字符,您可以在之后添加其他字符@#代码>:
(5)a-z[a-z[a-a-z]+美元)(((((!!手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手;a-z\d]+$)(?![!@#a-zA-z]+$)[!@#a-zA-z\d]{7,10}$
:
您根本不使用字符串。添加
.*
最后,您可以使用它。检查这一个
((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})
练习
http://www.regexr.com/
以下内容应适合您的需要:
^(?=.[A-Z])(?=.[A-Z])(?=.[0-9])(?=.[!@$%^&*():“;”?,./-])。{7,10}$
不要忘记在Java中转义反斜杠,因为它是字符串文本。换句话说,用两个反斜杠替换上面正则表达式中的每个反斜杠
如果您不想同时允许空格,只需将{7,10}
替换为\S{7,10}
(同样,在Java中转义反斜杠)
你错的原因有两个:
- 您没有在您的punct类中转义
和[
字符(语法错误)]
- 必须将
字符放在字符类的开头或结尾。否则,它将被解释为特殊字符。例如,-
匹配[a-Z]
和a
之间的任何大写字符,Z
匹配[AZ-]
、a
或Z
-
- 这里的基础也很好
([a-zA-Z0-9!@#$%^&*_+=(){}[\];':",\.<>\/\?-]{8,38})
([a-zA-Z0-9!@$%^&*.+=(){}[\];':“,\.\/\?-][8,38})
同样对于测试,我喜欢
https://regex101.com
你是这个意思吗?有什么好的理由限制10个字符吗?。。。许多有安全意识的人会有/想要一个12、14、16个字符以上的密码。@scunlife说得好,谢谢你,我们将讨论你的密码point@Suganthan既然您正在对密码进行哈希(和salt(希望是!!)),就没有理由限制它的上限字符限制。@stuXnet我不明白您的意思,你能简短一点吗?:请解释一下@更新我的解释。顺便说一句:为了便于阅读,只需使用@#
作为特殊字符,您可以在之后添加其他字符@#代码>为什么{6,20}
?操作状态:密码必须至少有7个但不超过10个字符a。。这是一个例子。。。第一个参数是,必须至少有6个字符,第二个参数…不应超过20个字符,您可以相应地更改它。对于测试字符串(1:-78tre48`12,2:-yuuyuy,3:-ad8\\\\\09+9)它实际失败可能是这是正确的版本,请检查我是否正确/^(?=.[A-Z])(?=.[A-Z])(?=.[0-9])(?=.[!@$%^&*(+)\~=
{}[]:“;”?,.\/-])。{7,10}$`@Suganthan在这些字符串中,您没有大写字母,而您要求的密码必须包含至少一个大写字母。是的,您是对的,让我清楚地测试我的“测试字符串”和我编写的代码”
([a-zA-Z0-9!@#$%^&*_+=(){}[\];':",\.<>\/\?-]{8,38})