ASP.NET正则表达式验证器(密码强度)

时间:2008-10-13 20:44:46

标签: javascript asp.net regex validation

我有一个验证控件,其中包含以下表达式:

(?=(.*\\d.*){2,})(?=(.*\\w.*){2,})(?=(.*\\W.*){1,}).{8,}

这是一个至少 2位数 2个字母字符 1个非字母数字 8个字符的密码。不幸的是,这似乎不符合跨浏览器。

此验证在Firefox中完美运行,但在Internet Explorer中不起作用。

您的每个答案的组合都会产生:

var format = "^(?=.{" + minLength + ",})" + 
    (minAlpha > 0 ? "(?=(.*[A-Za-z].*){" + minAlpha + ",})" : "") + 
    (minNum > 0 ? "(?=(.*[0-9].*){" + minNum + ",})" : "") + 
    (minNonAlpha > 0 ? "(?=(.*\\W.*){" + minNonAlpha + ",})" : "") + ".*$";

EX: "^(?=.{x,})(?=(.*[A-Za-z].*){y,})(?=(.*[0-9].*){z,})(?=(.*\W.*){a,}).*$"

重要的部分是(?。{x,})长度为第一

3 个答案:

答案 0 :(得分:14)

(?=(.*\W.*){0,})不是0个非字母数字字符。它是至少0个非字母数字字符。如果您希望密码不包含任何非字母数字字符,则可以(?!.*\W)(?=\w*$)

更简单的解决方案是跳过\W预测,并使用\w{8,}代替.{8,}

此外,\w包含\d。如果您只想要alpha,则可以执行[^\W\d][A-Za-z]

/^(?=(?:.*?\d){2})(?=(?:.*?[A-Za-z]){2})\w{8,}$/

这会验证密码是否包含至少两位数两个alpha 至少8个字符,并包含只有字母数字字符(包括下划线)。

  • \w = [A-Za-z0-9_]
  • \d = [0-9]
  • \s = [ \t\n\r\f\v]

修改 要在所有浏览器中使用它,您可能需要执行以下操作:

var re = new RegExp("^(?=(?:.*?\\d){2})(?=(?:.*?[A-Za-z]){2})\\w{8,}$");
if (re.test(password)) { /* ok */ }

Edit2:问题中的最新更新几乎使我的答案无效。 ^^;;

如果你用最初的模式替换模式,你最后仍然可以使用JavaScript代码。

编辑3:确定。现在我明白了你的意思。

/^(?=.*[a-z].*[a-z])(?=.*[0-9].*[0-9]).{3,}/.test("password123") // matches
/^(?=.*[a-z].*[a-z])(?=.*[0-9].*[0-9]).{4,}/.test("password123") // does not match
/^(?=.*[a-z].*[a-z]).{4,}/.test("password123")                   // matches

在Internet Explorer中,(?= )似乎不是零宽度。

http://development.thatoneplace.net/2008/05/bug-discovered-in-internet-explorer-7.html

编辑4:更多阅读:http://blog.stevenlevithan.com/archives/regex-lookahead-bug

我认为这可以解决您的问题:

/^(?=.{8,}$)(?=(?:.*?\d){2})(?=(?:.*?[A-Za-z]){2})(?=(?:.*?\W){1})/
new RegExp("^(?=.{8,}$)(?=(?:.*?\\d){2})(?=(?:.*?[A-Za-z]){2})(?=(?:.*?\\W){1})")

(?=.{8,}$)需要先来。

答案 1 :(得分:1)

这将为您提供2分钟数字,2分钟字符和最少8个字符长度......我拒绝向您展示如何不允许用户在其密码中包含非字母数字字符,为什么网站要强制执行更少安全密码?

^(?=.*\d{2})(?=.*[a-zA-Z]{2}).{8,}$

答案 2 :(得分:-3)

现有的基于jQuery的密码强度验证器之一怎么样 - 比如: http://scripts.simplythebest.net/4/Ajax-Password-Strength-Meter-software.html