正则表达式检查密码验证

时间:2016-06-28 12:00:41

标签: regex

我已经提到Srinivas的答案来进行密码验证。 最少8个字符,1个数字,1个字母和1个特殊字符的正则表达式是

"^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$"

使用此正则表达式,我只能使用以下特殊字符。 $ @ $!%*#?& 。 因此,如果我使用dheepan~123dheepan.123,则vaildation会失败。如何允许所有特殊字符?

2 个答案:

答案 0 :(得分:1)

您可以使用\W允许所有特殊字符,但我不确定您是否真的要这样做...无论如何:

^(?=.*[A-Za-z])(?=.*\d)(?=.*[\W])[\w\W]{8,}$

答案 1 :(得分:0)

您可以按照@ Thomas的解决方案将符号定义为所有非单词字符\W,但要注意这包括空格。如果用户的密码中有换行符,则几乎肯定会被锁定。

对于密码,值得完成描述您想要允许的字符的工作。如果您想使用代字号~或句号.,只需将它们添加到正则表达式中的字符类中,如@anubhava建议的那样。

"^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$"
//                                ^                     ^
//                                  \__add them here __/_________
//                                     | |                    | |
"^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&~\.])[A-Za-z\d$@$!%*#?&~\.]{8,}$"

要负责任地使用正则表达式,我们的目标应该是了解幕后发生的事情。以下是您正在使用的正则表达式的工作原理。

^
// From the beginning of your string

(?=.*[A-Za-z])
// Look ahead                           (?=       )
// any number of chars                  .*
// Until you find an alpha character    [A-Za-z]

(?=.*\d)
// Look ahead                           (?=       )
// any number of chars                  .*
// Until you find a digit               \d

(?=.*[$@$!%*#?&])
// Look ahead                           (?=       )
// any number of chars                  .*
// Until you find one of these chars    [$@$!%*#?&]

[A-Za-z\d$@$!%*#?&]{8,}
// Find any of these characters         [A-Za-z\d$@$!%*#?&]
// 8 or more times                      {8,}