【发布时间】:2014-04-17 02:26:46
【问题描述】:
我在我们网站上的面向客户的付款表单中有一个简单的 RegEx 模式:
<input type="text" pattern="(|\$)[0-9]*(|\.[0-9]{2})"
title="Please enter a valid number in the amount field" required>
添加它是为了帮助在客户未能输入有效号码时快速通知他们,然后再进行服务器端验证。
在四个客户打电话抱怨他们无法提交表单,因为他们的浏览器不断告诉他们输入的金额不正确后,我做了一些挖掘,发现 IE10+ 不喜欢这个表达式的背面——输入的任何不包含小数点的金额都被接受,任何带小数的金额都被拒绝。该模式适用于我的开发环境(Chrome 30+)和 Opera 12,但 Firefox 27 根本不会验证它。
我读了specs,它只是说:
如果指定,该属性的值必须与 JavaScript 模式生成相匹配。 [ECMA262]
由于支持pattern 的浏览器只有capable of supporting ECMAScript 5,我认为这包括对所有Javascript 正则表达式的完全支持。
我在哪里可以了解更多关于不同浏览器支持 pattern 之间的怪癖?
【问题讨论】:
-
因为您的问题是“我在哪里可以了解更多关于不同浏览器中模式支持之间的怪癖?”我投票决定将此作为离题关闭,因为它要求找到工具或参考。如果您可以更新您的问题以询问特定的怪癖,我认为这将是主题。
-
Javascript 有自己的正则表达式引擎,不使用 PCRE 库。
-
@Casimir:为您更新了措辞。 ;)
-
@zzzzBov:我在这里联系的原因是我完全无法通过谷歌挖掘任何东西。而且,看到 SO 在现代互联网信息领域中作为编程信息摘要/存档的作用越来越大,我认为提出这个问题是合适的。
-
@Eirik,虽然问“一个具体的、可回答的问题”是合适的,但要求非现场参考是题外话,因为它鼓励仅链接的答案可能难以选择一个是“正确的”,并且容易受到链接腐烂的影响。
标签: javascript regex html pcre