Regex Lookahead在IE6中不起作用

时间:2012-07-05 15:31:24

标签: asp.net regex internet-explorer-6 password-protection

我有一个正则表达式,除了IE6以外在所有浏览器中都能正常工作。从研究IE6开始,不支持预测断言。无论如何,我可以将以下表达式重写为跨浏览器吗?

密码必须介于8到20个字符之间,并且至少包含1个大写字母,1个小写字母和1个数字

我正在使用.Net和正则表达式验证器。

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,20}$

2 个答案:

答案 0 :(得分:0)

坦率地说,如果你被迫为IE6写作,那么我会避免试图过于聪明。做你需要的东西让它可用。

我考虑的选项:

  1. 将正则表达式拆分为三个单独的查询。不再需要预见。它会更慢,更混乱,我知道你更愿意正确编码,但如果我们想支持IE6,这些是我们做出的牺牲。它会起作用,它不应该对用户产生任何明显的区别。

  2. 忘记尝试在Javascript中执行此操作,并在服务器端简单验证它。鉴于这显然只是一个内部使用的网站(没有人在他们正确的思想中写一个网站供外部使用IE6支持),你可能会放弃像响应式UI这样的细节,特别是像边缘功能,如密码管理。

  3. 最后,请向贵公司强调IE6已经过时了。微软将在2014年初停止对它的所有支持:此时,发现的任何安全问题(以及将会有许多安全问题)将不再适用。因此,您可以确定它们将成为恶意软件的攻击目标:在您的网络中使用IE6将成为您无法想象的安全噩梦。你有一年升级。如果您现在还没有开始计划,那么您很可能会错过目标,而 会被黑客攻击。

    假设您的公司有一点意义,并且升级确实发生了,请记住,您现在编写的任何IE6特定代码仅具有有限的保质期。所以我将重复我在开始时所说的内容:为IE6用户做你需要做的可用;但是不要花太多精力让它们

答案 1 :(得分:-1)

你有错误的正则表达式,请使用:

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,20}$
相关问题