2

我在我的应用程序中使用了 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 中。我已经在这上面花费了太多时间,我很困惑。有人有什么想法吗??

4

1 回答 1

3

显然 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}$
于 2010-03-25T18:18:55.403 回答