JavaScript中的一些正则表达式问题(密码强度)

时间:2011-05-19 07:55:38

标签: javascript regex

我再次使用一些正则表达式语法进行密码验证。

密码规则为:

  1. 必须至少包含数字
  2. 必须至少包含一组. : , ; - $ % _ = ! ?
  3. 的特殊字符
  4. 不得包含除规则2中上述设置之外的其他特殊字符
  5. 可能包含一个或多个常规单词字符小写或大写
  6. 我到目前为止:

    var regex = /.*(?=.*[\.:,;\-\$%=\!\?])(?=.*\d).*/;
    

    但这只符合规则1和2,并允许任何其他特殊字符。

    有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

  

必须至少包含数字

/\d/
  

必须至少包含该集合的一个特殊字符。 :,; - $%_ =! ?

/[.:,;\-$%_=!?]/
  

不得包含除规则2中上述设置之外的其他特殊字符   可以包含一个或多个常规单词字符小写或大写

/^[a-z0-9.:,;\-$%_=!?]+$/

全部放在一起

/^(?=\D*\d)(?=[a-z0-9]*[^a-z0-9])[a-z0-9.:,;\-$%_=!?]+$/i

如果您想强制执行最小长度,可以使用{6,}或类似的东西,

/^(?=\D*\d)(?=[a-z0-9]*[^a-z0-9])[a-z0-9.:,;\-$%_=!?]{6,}$/i

答案 1 :(得分:0)

如果使用正则表达式来解决此问题,那么您的代码将更具可读性和易懂性。为每个规则创建一个函数(如果您愿意,其中一些可以使用正则表达式),然后您的检查如下:

if contains_digits(password) && \
   contains_special(password) && \
   only_contains_specific_chars(password) && \
   ...

然后添加新规则或调整现有规则变得微不足道。如果你采用正常的表达方式,你不明白,当你需要修改它的那一天,你将花费一整天的时间来弄清楚它。