【发布时间】:2011-01-13 16:05:09
【问题描述】:
以下正则表达式适用于 chrome 和 firefox,但不适用于 IE7:
^((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,20})$
它需要包含至少 8 个字符,并且至少有一个大写字母和一个数字。当我在 IE7 中尝试这个时,我必须输入 14 个字符才能验证。有人可以解释一下为什么以及所有 3 种浏览器的正确表达方式是什么。
我正在使用 asp:RegularExpressionValidator 来验证密码。
【问题讨论】:
-
困惑。这被标记为 C# 和 ASP.NET,所以大概这个正则表达式正在服务器端运行并且浏览器是无关紧要的?如果这是javascript,请标记它。
-
好吧,正则表达式是一个 asp:RegularExpressionValidator,它是客户端验证。我相信默认情况下,正则表达式在客户端运行,除非我指定服务器端验证事件处理程序。如果我错了,请纠正我?
-
如果问题出在 IE 而不是 firefox,它必须在客户端上运行。你甚至知道正在生成什么 HTML/JS 源代码吗?我认为您需要做更多的学习,而不仅仅是“正则表达式”。
-
澄清一下,asp:RegularExpressionValidator 将生成运行客户端的 javascript 代码。因此,实际验证是在 javascript 中完成的。我建议你查看生成的 javascript 代码并尝试简化它,看看它在 IE 中哪里出错了。
-
我刚刚使用了你的正则表达式,它在 IE 7/8 和 Asp.net RegularExpression 中工作。
标签: c# javascript asp.net regex client-side