我有一个正则表达式,它在除 IE6 之外的所有浏览器中都能正常工作。从研究 IE6 不支持前瞻断言。无论如何我可以将以下表达式重写为跨浏览器吗?
密码必须介于 8 到 20 个字符之间,并且至少包含 1 个大写字母、1 个小写字母和 1 个数字
我正在使用 .Net 和正则表达式验证器。
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,20}$
我有一个正则表达式,它在除 IE6 之外的所有浏览器中都能正常工作。从研究 IE6 不支持前瞻断言。无论如何我可以将以下表达式重写为跨浏览器吗?
密码必须介于 8 到 20 个字符之间,并且至少包含 1 个大写字母、1 个小写字母和 1 个数字
我正在使用 .Net 和正则表达式验证器。
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,20}$
坦率地说,如果您被迫为 IE6 编写代码,那么我会避免在这方面过于聪明。做你需要做的,让它可用。
我会考虑的选项:
将正则表达式拆分为三个单独的查询。不再需要前瞻。它会更慢更混乱,我知道你宁愿正确编码,但如果我们想要支持 IE6,这些是我们做出的牺牲。它会起作用,并且它不应该对用户产生任何明显的影响。
忘记尝试在 Javascript 中执行此操作,只需在服务器端进行验证即可。鉴于这显然是一个仅供内部使用的网站(没有人会写一个支持 IE6 的外部使用网站),你可能会放弃像响应式 UI 这样的细节,特别是对于像这样的边缘功能密码管理。
最后,请向贵公司强调 IE6 已过时。Microsoft 将在 2014 年初停止对它的所有支持:此时,发现的任何安全问题(并且会有很多)都将无法解决。因此,您可以确定它们将成为恶意软件的攻击目标:在您的网络中安装 IE6 将成为您无法想象的安全噩梦。你有一年的时间升级。如果您现在还没有开始计划,您很可能会错过目标,并且您将被黑客入侵。
假设您的公司有一点点意义,并且升级确实发生了,那么值得记住的是,您现在编写的任何 IE6 特定代码都只有有限的保质期。所以我将重复我一开始所说的:做你需要做的,让它对 IE6 用户可用;但不要花太多精力让它对他们有好处。
你有错误的正则表达式,使用这个:
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,20}$