正则表达式 – 输入模式在IE11中完全不匹配,但在Chrome,FF中
以下输入字段在Chrome和FF中完全验证,但仅部分在IE11中验证.
<input name="bic" value="" type="text" title="BIC-Code" required pattern="[A-Z]{6}[A-Z2-9][A-NP-Z0-2](|[A-WY-Z0-9][A-Z0-9]{2}|X{3})" > 使用带有8个字符的BIC测试代码始终可以在任何浏览器中使用.用11个字符测试它会在IE中产生错误. 目前安装的版本:11.0.9600.17959,updateversion:11.0.22 例子: > 6个字符在所有浏览器中都有效:RBOSGGSX 问题: > IE中是否存在错误(可能)? Google发现的唯一一个是^ [0-9] * $的type =’number’“问题”. http://www.w3.org/TR/2011/WD-html5-20110525/common-input-element-attributes.html#the-pattern-attribute说:
甚至Javascript-Engine在IE11中也能正确验证: new RegExp("^[A-Z]{6}[A-Z2-9][A-NP-Z0-2](|[A-WY-Z0-9][A-Z0-9]{2}|X{3})$").test("GENODEF1S04"); 解决方法
似乎IE11无法处理第一个分支为空的交替.这个:
(|[A-WY-Z0-9][A-Z0-9]{2}|X{3}) ……应该等同于: ((?:[A-WY-Z0-9][A-Z0-9]{2}|X{3})??) ……意思是[A-WY-Z0-9] [A-Z0-9] {2}或X {3}或什么都没有,“无”是第一个(或首选)选项. 我建议不要使用“或没有”的习惯用法,即使最后是空分支(这似乎在IE11中也可以正常工作).这不是很常见,我认为一个可选组可以更好地传达您的意图. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |