我看到的大多数示例都没有 ^(抑扬符)和 $(货币或美元)字符来标记匹配字符串的开头和结尾。但是,我在 html5 规范中没有找到任何关于此的内容。它们是否隐含在模式中?html5 规范声明它们是隐式的。
编译后的模式正则表达式在与字符串匹配时,必须将其开头锚定到字符串的开头,并将其结尾锚定到字符串的结尾。这意味着用于该属性的正则表达式语言与 JavaScript 中使用的相同,除了模式属性与整个值匹配,而不仅仅是任何子集(有点好像它在开头暗示了一个 ^(?:模式和最后的 )$)。
在 type="text" 输入中,该模式使用任何一种格式都可以正常工作,但是在 type="tel" 输入中,我必须删除字符才能使正则表达式按预期工作。我已经在 Opera 和 Firefox 中进行了测试。
这是浏览器错误吗?我应该在 bugzilla 等中提交错误吗?
编辑:似乎我偶然发现了一个奇怪的错误,因为我无法创建简化的测试用例。页面中的简单输入不会显示上述行为。然而,问题仍然存在。我应该,还是不应该使用该死的 ^ 和 $ 锚?