密码与正则

通常我们需要校验验证用户输入的密码是否符合强度要求。

密码字符包括以下几种:

  • 小写英文字符 [a-z]
  • 大写英文字符 [A-Z]
  • 阿拉伯数字 [0-9]
  • 部分特殊字符 [&#96;~!@#$%^&*()_\-+=|\\\[\]{}:;'"<>,.\/?], 简化为 [ -\/:-@\[-&#96;{-~]

注,md 的限制,上面特殊字符中 ` 使用 &#96; 代替。

目前常见的密码强度包括以下几种

  • 普通强度:必须同时包含 2种字符。
  • 高强度:必须同时包含 3种字符。
  • 极高强度:必须同时包含 4种密码字符。

通常情况下,我们可能会基于种种考虑采用字符串方法计算密码强度,或校验密码合法性, 下面我们更多的考虑使用正则表达式来解决这个问题。

1var normal = /^(?![0-9]+$)(?![a-zA-Z]+$)(?![ -\/:-@\[-`{-~]+$)[0-9A-Za-z -\/:-@\[-`{-~]{6,20}$/;
2
3var high = /^(?![0-9a-zA-Z]+$)(?![a-zA-Z#*@\-\_]+$)(?![0-9#*@\-\_]+$)[0-9A-Za-z#*@\-\_]{6,20}$/;
4
5var highest = "1aa1".replace(/^(?:([a-z])|([A-Z])|([0-9])|(.)){6,}|(.)+$/, "$1$2$3$4$5")

Tags: RegExp

Published on 2013-11-17