Skip to main content

asp.net用正则表达式对密码进行格式验证

在asp.net中常用RegularExpressionValidator来对密码的格式进行第一次验证。现有密码格式要求如下:

  • 长度8-12位。
  • 至少有一个字母。
  • 至少有一个数字。
  • 至少有一个特殊字符(非数字和字母的字符,例如:!@#$%等)。

在MSDN里找asp.net membership密码强度验证相关的东西,里面有对6位以上,至少一数字和特殊字符的正则表达式如下"(?=.{6,})(?=(.*\d){1,})(?=(.*\W){1,})"。当我把短代码复制到RegularExpressionValidator里面才发现,即使是符合的规定的密码也不能通过验证。

查看asp.net的js文件,找到调用RegularExpressionValidator的函数:function RegularExpressionValidatorEvaluateIsValid(val) {
  var value = ValidatorGetValue(val.controltovalidate);
  if (ValidatorTrim(value).length == 0) {
    return true;
  }
  var rx = new RegExp(val.validationexpression);
  var matches = rx.exec(value);
  return matches != null && value == matches[0];
}

(?=pattern)就是所谓的“正向预查”,是个“非获取匹配”,也就是说如果不能匹配(?=pattern)的话,matches的值是null,即使匹配了,matches[0](最后一次匹配的值)的值也是空("")。

根据以上,修改RegularExpressionValidator中的ValidationExpression为"(?=.{8,12})(?=.*[0-9]+)(?=.*[a-zA-Z]+)(?=.*\W+)(.*)"

Comments

Popular posts from this blog

欠税了!!!!

上个礼拜,收到政府发来的信,大概知道是和缴税有关的,由于本人英文不好,而且我们缴税的方面一向是由公司负责的,以为是普通的通知。因为同事收到的信都和我的不一样,还是决定带给老大看看是什么东西。结果把老大吓了一跳,红的,居然是红的(我怎么看都只有一点淡淡的红色。)。这意味着我欠税了。在这个资本主义国家,最恐怖的事情莫过去欠税了!!!我的工作准证很可能被吊销。 下午立马跑回公司找人事部的。我居然公司成立几十年来第一个红单。。。人事部的人说还好公司一贯信誉良好,他们会和那边联系,让我先放心。 我倒是很放心,一点都不急。其实我想回家了,和女朋友的关系这几天又到了谷底,想回去了,虽然房子钱还没有着落。

ipod touch

昨天晚上买了iPod Touch 8G S$388,晚上手机没法照,上一张官网的图: 拿在手里的感觉很不错,超薄。终于可以用上传说中的多重触控了。音质?汗,我素木耳。 昨晚太赶,忘了贴膜,配套的套子也没有。今天再去森林看看。这些杂物好贵啊啊啊。