正则表达式仅在IE7中失败

时间:2013-03-13 09:18:59

标签: javascript regex

我已使用以下规则为密码字段验证检查创建了正则表达式:

  1. 至少小写字母
  2. 至少一个大写的字符
  3. 至少一个特殊的字符
  4. 至少一个数字
  5. 正则表达式:/^(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9]).{8,}$/

    任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

最简单的解决方法是不要使用前瞻。在您的情况下,由于所有前瞻都从字符串的开头开始(由于^),因此相当于分别检查每个前瞻。您可以进一步删除.*并进行无固定的匹配。

if (/[a-z]/.test(str) &&
    /[A-Z]/.test(str) &&
    /[!@#$&*]/.test(str) &&
    /[0-9]/.test(str) &&
    str.length() >= 8) {

    // All conditions met
}

答案 1 :(得分:0)

应用Change Password Control RegEx validating oddly in IE 7 only中建议的相同概念,您最终会得到以下正则表达式:

/^(?=.{8,}$)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$&*])(?=.*[0-9]).*/

我没有IE7,所以我无法测试它。