加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式在IE7浏览器出现校验结果不正确

发布时间:2020-12-14 06:39:32 所属栏目:百科 来源:网络整理
导读:/^(?=.*d)(?=.*[a-zA-Z])(?=.*[!-/:-@[-`{-~])[!-~]{3,16}$/.test(str); 如上所示,该正则是校验字符串必须同时包含数字、字母和特殊字符,且字符串长度在3到16之间的。 该正则在IE8及以上浏览器中都可以正常校验密码,但客户那边有些浏览器是IE7或者更低
/^(?=.*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和其他浏览器上面正常校验了。以下是原文的截图

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读