更改密码控制RegEx仅在IE 7中进行奇怪的验证

时间:2010-03-25 18:12:25

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

我在我的应用程序中使用Asp.net更改密码控件,所有内容似乎都找不到,直到用户告诉我在更改密码时遇到强度要求时遇到问题。考虑到这一点,她正在使用IE 7,无论她投入什么,验证失败(仅在IE 7中。火狐,IE 8,Chrome等都按预期工作)。这是我正在使用的正则表达式:

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

我尝试了一些我在整个网站上发现的其他人,以及其他人似乎没有问题,我遇到了同样的问题。

似乎我输入的最后一个模式(数字,上部或下部alpha)是预期重复最少5次的模式。例如:

Hello1(不起作用)

11111Hello(不起作用)

Hello11111(有效)

同样,这只是在IE 7中。我已经花了太多时间在这上面而且我很难过。有人有什么想法吗?

1 个答案:

答案 0 :(得分: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}$