以下输入字段在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
RBOSGGSX
GENODEF1S04
Google发现的唯一问题是type='number'
“问题”与^[0-9]*$
。
这意味着用于此的正则表达式语言 属性与JavaScript中使用的属性相同,除了 pattern属性必须匹配整个值,而不仅仅是任何子集 (有点好像暗示了^(?:在模式的开头和a)$ 最后)。
即使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");
答案 0 :(得分:2)
似乎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}
或什么都没有,&#34;没有&#34;是第一个(或首选)选项。
我建议不要使用&#34;或者没有&#34;成语,即使在最后的空分支(这似乎在IE11中工作正常)。它并不常见,我认为一个可选组可以更好地传达您的意图。