/^(?=.*\d)(?=.*[a-zA-Z])(?=.*[!-\/:-@\[-`{-~])[!-~]{3,16}$/.test(str);
如上所示,该正则是校验字符串必须同时包含数字、字母和特殊字符,且字符串长度在3到16之间的。
该正则在IE8及以上浏览器中都可以正常校验密码,但客户那边有些浏览器是IE7或者更低,导致很多符合规则的密码都校验不通过。
【PS:第一次发现正则在浏览器中也存在兼容问题】
后面查了一下stackoverflow上面的问题,发现别人也遇到过这个问题,原来是IE7正则引擎存在bug导致的【有兴趣的看这边】
后面把上面的正则改为如下:
/^(?=[!-~]{3,16}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[!-\/:-@\[-`{-~]).*/.test(str);区别如下:
/^(?=[!-~]{3,16}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[!-\/:-@\[-`{-~]).*/.test(str);
红色部分就是区别所在,虽然这样子结构很怪异,但经过测试,确实可以在IE7和其他浏览器上面正常校验了。以下是原文的截图
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。