【问题标题】:Change Password Control RegEx validating oddly in IE 7 only更改密码控制 RegEx 仅在 IE 7 中奇怪地验证
【发布时间】:2010-03-25 18:12:24
【问题描述】:

我在我的应用程序中使用了 Asp.net 更改密码控件,在用户告诉我她在更改密码时遇到了满足强度要求的问题之前,一切似乎都很好。对此进行调查,她正在使用 IE 7,无论她输入什么,验证都会失败(并且仅在 IE 7 中。Firefox、IE 8、Chrome 等都按预期工作)。这是我正在使用的正则表达式:

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

我已经尝试了一些我在整个网站上找到的其他方法,以及人们似乎在使用没有问题的其他方法,但我遇到了同样的问题。

似乎我在最后输入的任何模式(数字、上或下 alpha)都是预计至少重复 5 次的模式。例如:

Hello1(不起作用)

11111Hello(不起作用)

Hello11111(有效)

同样,这仅适用于 IE 7。我已经在这方面花费了太多时间,我感到很困惑。有人有什么想法吗??

【问题讨论】:

    标签: asp.net regex internet-explorer-7 lookahead


    【解决方案1】:

    显然 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}$
    

    【讨论】:

    • 有趣,我的正则表达式中确实有 *,但不知何故,当我发布时它被删除了。我没注意到。
    • 谢谢!我尝试了变化,将 5,15 放在前面,但从来没有完全正确。这是一个很好的帖子来解释这个问题。谢谢!
    • Internet Explorer 一个错误。
    猜你喜欢
    • 2013-03-15
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 2011-07-25
    • 2014-07-27
    • 1970-01-01
    • 2021-11-09
    • 2014-02-03
    相关资源
    最近更新 更多