密码正则表达式,包含字符,数字和标点符号

时间:2014-08-20 09:44:42

标签: java regex

我需要一个密码的正则表达式,其条件类似于

1。密码必须至少包含7个字符但不得超过10个字符。

2。密码必须包含至少一个大写字母,一个较低     大小写字母,一位数字和一个标点字符。(例如,a-z,     AZ,0-9,@#$%^&安培; *()_ + |〜 - ='{} []:!?&#34 ;;'<>,/)

我尝试过使用:^(?=.{7,10})(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*()_+|~= {}:&#34 ;;'<>?,。/ - ] [])$`

但是当我在http://regex101.com/

中进行测试时,标点符号部分的解释并不清楚

标点符号解释似乎已被打破,有些人可以解释原因,并帮助我完成此任务。

5 个答案:

答案 0 :(得分:5)

以下内容应符合您的需求:

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*()_+|~=`{}\[\]:";'<>?,./-]).{7,10}$

Regular expression visualization

Debuggex Demo

不要忘记在字符串文字中逃避Java中的反斜杠。换句话说,用两个反斜杠替换上面的正则表达式中的每个反斜杠。

如果您不想同时允许空格,请简单地将.{7,10}替换为\S{7,10}(再次,转义Java中的反斜杠)。


你的错误的两个原因:

  • 你没有逃脱你的punct类中的[]字符(语法错误);
  • 您必须将-字符放在char类的开头或结尾处。否则,它将被解释为特殊字符。例如,[A-Z]匹配AZ之间的任何大写字符,而[AZ-]匹配AZ-

答案 1 :(得分:0)

我很难写这个正则表达式:

为了便于阅读,只需使用!@#作为特殊字符,您可以在!@#之后添加其他字符:

^(?!\d+$)(?![a-z]+$)(?![A-Z]+$)(?![!@#]+$)(?![a-z\d]+$)(?![A-Z\d]+$)(?![!@#\d]+$)(?![a-zA-Z]+$)(?![!@#a-z]+$)(?![!@#A-Z]+$)(?![a-zA-Z\d]+$)(?![!@#a-z\d]+$)(?![!@#A-Z\d]+$)(?![!@#a-zA-Z]+$)[!@#a-zA-Z\d]{7,10}$

DEMO

^           
(?!\d+$)           // the password cannot be all digites,of course
(?![a-z]+$)        // the password cannot be all a-z
(?![A-Z]+$)        // the password cannot be all A-Z
(?![!@#]+$)        // the password cannot be all !@# 
(?![a-z\d]+$)      // the password cannot be all a-z 0-9
(?![A-Z\d]+$)      // the password cannot be all A-Z 0-9
(?![!@#\d]+$)      // the password cannot be all !@# 0-9
(?![a-zA-Z]+$)     // the password cannot be all A-Z a-z
(?![!@#a-z]+$)     // the password cannot be all !@# a-z
(?![!@#A-Z]+$)     // the password cannot be all !@# A-Z
(?![a-zA-Z\d]+$)   // the password cannot be all A-Z a-z 0-9
(?![!@#a-z\d]+$)   // the password cannot be all !@# a-z 0-9
(?![!@#A-Z\d]+$)   // the password cannot be all !@# A-Z
(?![!@#a-zA-Z]+$)  // the password cannot be all !@# a-z A-Z
[!@#a-zA-Z\d]{7,10}  // the password SHOULD be in `!@# a-z A-Z 0-9` and length 7-10
$

答案 2 :(得分:0)

你根本不消耗你的字符串。添加

.* 

最后要消耗它。

答案 3 :(得分:0)

检查一下

          ((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})

练习

           http://www.regexr.com/

答案 4 :(得分:0)

这里也有很好的基础

([a-zA-Z0-9!@#$%^&*_+=(){}[\];':",\.<>\/\?-]{8,38})

也用于测试我喜欢https://regex101.com