我在我的应用程序中使用Asp.net更改密码控件,所有内容似乎都找不到,直到用户告诉我在更改密码时遇到强度要求时遇到问题。考虑到这一点,她正在使用IE 7,无论她投入什么,验证失败(仅在IE 7中。火狐,IE 8,Chrome等都按预期工作)。这是我正在使用的正则表达式:
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).{5,15}$
我尝试了一些我在整个网站上发现的其他人,以及其他人似乎没有问题,我遇到了同样的问题。
似乎我输入的最后一个模式(数字,上部或下部alpha)是预期重复最少5次的模式。例如:
Hello1
(不起作用)
11111Hello
(不起作用)
Hello11111
(有效)
同样,这只是在IE 7中。我已经花了太多时间在这上面而且我很难过。有人有什么想法吗?
答案 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}$