代码之家  ›  专栏  ›  技术社区  ›  acme

需要帮助:RegEx用于包含数字和特殊字符的密码

  •  1
  • acme  · 技术社区  · 15 年前

    我需要一个密码RegEx的帮助。密码必须至少包含一个特殊字符(如“thepathird$&/!)还有一个数字。

    例如,像“EdfA433&这样的密码必须是有效的,而“aASEas¨”不是因为它不包含数字。

    到目前为止,我有以下RegEx:

    ^(?=.*[0-9])(?=.*[a-zA-Z]).{3,}$
    

    但这张显然只查了一个号码。有人能帮忙吗?

    3 回复  |  直到 15 年前
        1
  •  2
  •   gsnedders    15 年前

    最好只使用多个简单的正则表达式:任何检查此类代码的代码都不会对性能敏感,而且给定一个更复杂的子查询的额外复杂性可能是不合理的。

    所以,我要做的是:

    var valid = foo.match(/[0-9]/) && foo.match(/["§$&/!]/);
    

    我想知道你是否真的想定义这样一个特殊的字符:é算不算是一个特殊的字符?~算不算特殊人物?

        2
  •  2
  •   Tim Pietzcker    15 年前
     ^(?=.*\d)(?=.*\W).{3,}$
    

    检查至少一个数字( \d )一个非字母数字字符( \W ). \西 \w 它匹配数字、字母和下划线。

    如果要在“特殊字符”列表中包含下划线,请使用

     ^(?=.*\d)(?=.*[\W_]).{3,}$
    
        3
  •  1
  •   Michał Niklas    15 年前

    我将把检查密码是否“硬”的函数分成几个部分,在每个部分中,我将检查一个条件。您可以在每日WTF上看到一些复杂的regex,其中包含密码重置: http://thedailywtf.com/Articles/The-Password-Reset-Facade.aspx