正则表达式在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和其他浏览器上面正常校验了。以下是原文的截图




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值