一些 HTML5 输入元素接受pattern
属性,它是用于表单验证的正则表达式。其他一些 HTML5 输入元素,例如,input type=email
自动进行验证。
现在看来,跨浏览器处理验证的方式是不同的。给定一个特定的浏览器,比如 Chrome,是否可以以编程方式提取用于验证的正则表达式?或者也许那里有文档?
The HTML5 规范 http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address当前列出了一个与 ABNF 匹配的有效电子邮件地址:
1*( atext / "." ) "@" ldh-str *( "." ldh-str )
这在这个问题 https://stackoverflow.com/questions/4940120/is-there-a-java-implementation-of-the-html5-input-email-validation. @SLaks 答案 https://stackoverflow.com/questions/4940120/is-there-a-java-implementation-of-the-html5-input-email-validation/4940155#4940155提供等价的正则表达式。
也就是说,稍微挖掘一下源头,就会发现WebKit 实现 http://trac.webkit.org/browser/trunk/Source/WebCore/html/EmailInputType.cpp?rev=86298使用与以下基本相同的正则表达式进行电子邮件地址验证斯拉克的回答 https://stackoverflow.com/questions/4940120/is-there-a-java-implementation-of-the-html5-input-email-validation/4940155#4940155, i.e.,
[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*
但是,不要求电子邮件地址通过正则表达式进行验证。例如,Mozilla(壁虎) http://hg.mozilla.org/mozilla-central/file/cf5da681d577/content/html/content/src/nsHTMLInputElement.cpp#l3967使用非常基本的方法实现电子邮件验证有限状态机 http://en.wikipedia.org/wiki/Finite-state_machine。因此,电子邮件验证中不需要涉及正则表达式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)