【问题标题】:Regex to check password validation [duplicate]正则表达式检查密码验证[重复]
【发布时间】:2016-10-30 17:58:09
【问题描述】:

我参考了Srinivas 的回答来进行密码验证。 最少 8 个字符、1 个数字、1 个字母和 1 个特殊字符的正则表达式是

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

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

【问题讨论】:

  • "所有特殊字符" ?定义它们,你就有答案了。
  • 这意味着您不了解给定的解决方案。只需将这些特殊字符添加到您的角色类中即可。
  • 将它们添加到 [$@$!%*#?&] 中。添加点时记得给斜杠( \. )。使用“~” - 我不知道是否需要斜线,但您可以尝试使用和不使用。
  • @All,感谢您将其添加到字符类的建议。但是,我不想特别指定每一个。我只是想知道是否有一般的方法。可能是我没有正确表达我的问题:) 无论如何,我从 Thomas Ayoub 那里得到了答案。

标签: regex


【解决方案1】:

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

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

【讨论】:

  • 仅供参考:[\w\W] 等同于 .,因为 \W^\w
  • @Cam:不是真的,. 默认不匹配换行符。
  • 公平点,@Toto;默认情况下 . 不匹配换行符。所以. = [\w\W] - \n。虽然/./s = /[\w\W]/
【解决方案2】:

您可以按照@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,}

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 1970-01-01
    • 2015-06-10
    • 2016-06-03
    • 2016-04-15
    • 2014-12-12
    • 2016-10-09
    • 2016-04-12
    • 2014-12-16
    相关资源
    最近更新 更多