由 8 ~20 位字母、数字、常用特殊字符组成。特殊字符范围(` ~ ! @ # $ % ^ & * _ - + = , . ? / | \
匹配下面任意一种情况则为真
    1.大写字母 + 小写字母
    2.字母 + 数字
    3.字母 + 特殊字符
    4.字母 + 数字 + 特殊字符

解决方案 »

  1.   

    /^(?![0-9]+$)(?![` ~ ! @ # $ % ^ & * _ \- + = , . ? \/ | \]+$)[a-z0-9` ~ ! @ # $ % ^ & * _ \- + = , . ? \/ | \]{8,20}/i
    不能全为数字,也不能全为特殊字符,是吧?
      

  2.   

    不能是纯数字,也不能纯大写字母,也不能纯小写字母,也不能纯特殊字符,也不能纯数字+特殊字符,然后匹配。这样写太傻了:(/^(?![0-9]+$)(?![A-Z]+$)(?![a-z]+$)(?![\`\~\!\@\#\$\%\^\&\*\_\-\+\=\,\.\?\/\|\\]+$)(?![0-9\`\~\!\@\#\$\%\^\&\*\_\-\+\=\,\.\?\/\|\\]+$)[a-zA-Z0-9\`\~\!\@\#\$\%\^\&\*\_\-\+\=\,\.\?\/\|\\]{8,20}$/.test(value)