Opera中没有输入验证消息

时间:2014-06-09 08:06:16

标签: html5 validation opera email-validation

输入无效的电子邮件地址或某些文字,按OK - Opera 22不会显示任何验证错误消息,表单也不提交......这是Opera错误还是我做错了什么?

<form>
  <input type="email"/>
  <button type="submit">OK</button>
</form>

在此测试:http://jsfiddle.net/sPUEG

1 个答案:

答案 0 :(得分:0)

通过not valid电子邮件定义您的意思,根据RFC 5321和RFC 5322,电子邮件验证有相当直观的正则表达式模式。

<强>语法

电子邮件地址的格式为local-part@domain,其中local-part最多可包含64个字符,domain名称最多可包含253个字符 - 但最大值为256-正向或反向路径的字符长度限制整个电子邮件地址长度不超过254个字符。

正式定义在RFC 5322(第3.2.3和3.4.1节)和RFC 5321中 - 在信息RFC 3696 [3]和相关勘误表中给出了更易读的形式。

本地部分

电子邮件地址的local-part可能会使用这些ASCII个字符中的任何一个。 RFC 6531允许超出ASCII范围的Unicode字符:

  • 大写和小写英文字母(a-z,A-Z)(ASCII:65-90,97-122)
  • 数字0到9(ASCII:48-57)
  • 这些特殊字符:! #$%&amp; &#39; * + - / =? ^ _` {| }〜(有限支持)
  • 性格。 (点,句号,句号)(ASCII:46),前提是它不是第一个或最后一个字符,并且还提供它不连续出现两次或多次(例如John..Doe @ example.com不允许) )。
  • 允许使用特殊字符进行限制。它们是:
  • 空格和&#34;(),:;&lt;&gt; @ [](ASCII:32,34,40,41,44,58,59,60,62,64,91-93 )

  • 特殊字符的限制是,只有在引号之间包含 时才能使用,其中包含2个(反斜杠\和引号&#34;(ASCII: 92,34))之前还必须加上反斜杠\(例如&#34; \\&#34;&#34;)。

  • 允许在本地部分两端带括号的注释;例如john.smith(comment)@example.com(comment)john.smith@example.com都等同于john.smith@example.com

  • RFC 6531允许使用U + 007F以上的国际字符,但邮件系统可能会限制在分配本地部分时使用哪些字符。

带引号的字符串可以作为局部部分中的点分隔实体存在,或者当最外面的引号是局部部分的最外面的字符时可以存在(例如abc."defghi".xyz@example.com"abcdefghixyz"@example.com <强>允许。相反,abc"defghi"xyz@example.com不是; abc\"def\"ghi@example.com也不是。

但引用的字符串和字符并不常用。 RFC 5321还警告&#34; 希望接收邮件的主机应该避免定义Local-part需要(或使用)Quoted-string表单的邮箱&#34;。

local-part postmaster受到特殊处理 - 它不区分大小写,应转发给域名电子邮件管理员。从技术上讲,所有其他local-parts都区分大小写,因此jsmith@example.comJSmith@example.com指定不同的邮箱;但是,许多组织将大写和小写字母视为等效字母。

大多数组织不允许使用许多技术上有效的特殊字符。组织可以根据需要自由地限制自己的电子邮件地址的形式,例如,Windows Live Hotmail只允许使用字母数字,点(。),下划线(_)和连字符( - )创建电子邮件地址。[5 ]

发送邮件的系统必须能够处理所有有效地址的外发邮件。与相关标准相反,一些有缺陷的系统将某些合法地址视为无效,并且无法处理到这些地址的邮件。例如,Hotmail拒绝向包含以下任何标准的任何地址发送邮件 - 允许的字符:!#$%*/?^ {|}〜`。

域名

电子邮件地址的域名部分必须符合严格的准则:它必须符合hostname的要求,包括字母,数字,连字符和点。此外,域名部分可能是 IP地址文字,由方括号括起,例如jsmith@[192.168.2.1],但除了电子邮件垃圾邮件外,很少可见。

国际化域名(编码为符合主机名要求)允许表示非ASCII域名部分。

域部分和本地部分都允许注释。例如。 john.smith@(comment)example.comjohn.smith@example.com(comment)相当于john.smith@example.com

<强>实施例

有效的电子邮件地址

niceandsimple@example.com

very.common@example.com

a.little.lengthy.but.fine@dept.example.com

disposable.style.email.with+symbol@example.com

other.email-with-dash@example.com

电子邮件地址无效

Abc.example.com(@字符必须分隔本地和域名部分)

A@b@c@example.com(只允许一个@在引号外)

a"b(c)d,e:f;g<h>i[j\k]l@example.com(此本地部分中的任何特殊字符都不允许在引号外面)

just"not"right@example.com(引用的字符串必须以点分隔,或构成本地部分的唯一元素)

this is"not\allowed@example.com(空格,引号和反斜杠只有在带引号的字符串中且以反斜杠开头时才存在)

this\ still\"not\\allowed@example.com(即使转义(以反斜杠开头),空格,引号和反斜杠仍必须包含在引号中)

有关详细信息,请参阅here