代码之家  ›  专栏  ›  技术社区  ›  earthling

仅在IE 7中奇怪地更改密码控制正则表达式验证

  •  2
  • earthling  · 技术社区  · 16 年前

    我正在应用程序中使用asp.net更改密码控件,在用户告诉我她在更改密码时无法满足强度要求之前,一切看起来都很好。对此,她正在使用IE7,不管她输入了什么,验证都失败了(而且只在IE7中)。Firefox、IE8、Chrome等都能正常工作)。这是我正在使用的正则表达式:

    ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).{5,15}$
    

    我已经尝试了一些其他的,我发现在这个网站和其他人似乎正在使用没有问题,我遇到了同样的问题。

    似乎我最后输入的模式(数字、上或下alpha)应该是最少重复5次的模式。例如:

    Hello1 (不起作用)

    11111Hello (不起作用)

    Hello11111 (作品)

    再说一遍,这只出现在IE7中。我已经在这件事上花了太多的时间,我被难住了。有人知道吗??

    1 回复  |  直到 15 年前
        1
  •  3
  •   Ahmad Mageed    16 年前

    显然Internet Explorer有一个错误。看看这篇文章: A JScript/VBScript Regex Lookahead Bug . 这个例子是相同的-一个密码检查-他们提供了一个解决办法。以他们建议的方法为指导,模式变成:

    ^(?=.{5,15}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*
    

    它们的模式与您的非常相似,除了空格的负外观。


    试用使用 .* 环视四周。只使用 . 只覆盖一个字符,后面跟着您在环视中指定的内容。你要一直向前看,看看是否有匹配的东西。我在expresso中尝试了下面的表达式,它处理了您列出的示例,但在预期的无效输入上也失败了。
    ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).{5,15}$