苦苦挣扎的电子邮件正则表达;你能帮我吗?

时间:2011-01-20 18:57:22

标签: javascript regex email

好的,所以我知道用RegEx完全验证电子邮件地址是不可能的,我只是尝试通过电子邮件发送它并让用户点击验证链接。但是,这是一个a-level项目的一部分,我为此做了额外的复杂性点,所以我想知道你是否可以帮助我。我正在尝试编写一封验证正则表达式的电子邮件,该电子邮件遵循以下规则:

电子邮件地址必须包含由@符号(x40)分隔的本地部分和域部分,其总长度不超过256个字符。

本地部分:

非引用的本地部分可能包含(az),(AZ),数字(0-9)和以下字符:!#$%&'* + - / = ?^ _ {`|}〜检查

点也可能出现在本地部分,但不能是第一个也不是最后一个字符,也不能与另一个点相邻(。)ALMOST CHECK,DOT可能最后

本地部分的最大长度为64个字符。可能忽视 - 不检查

域名部分:

域部分由点分隔的标签组成,每个标签的长度为1到63个字符,最大总长度为255个字符(包括点分隔符)。 CHECK

域标签必须以alpha(a-z)(A-Z)或数字(0-9)字符开头和结尾,并且可以包含连字符( - )。此外,TLD(最后一个标签)必须包含至少一个字母字符或连字符(不是所有数字),并且必须至少包含两个字符。 - 检查

在达到目标方面,我是多远。我遇到的主要问题是确保点不能是域的本地部分中的最后一个字符。到目前为止,这是我的RegEx:

/ ^ [A-Z0-9#$%&安培;!?'* + \ / = ^ _ {|}~-]([A-z0-9!#$%&'*+\/=?^_ {|}〜 - ] |){0,(()。?!)。 62} [!A-Z0-9#$%&安培;'* + \ / = ^ _`{|}〜 - ?] @([A-Z0-9 - ] {1,63}。){1126? } [AZ - ] {2,63} $ /

编辑:灰色部分的开头和结尾应该有反引号。

2 个答案:

答案 0 :(得分:1)

从技术上讲,RFC 2822投诉RegEx将是:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

你应该看一下http://www.regular-expressions.info/email.html

答案 1 :(得分:1)

/^[a-z0-9!#$%&'*+\/=?^_`{|}~-](\.?[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@([a-z0-9]([A-z0-9-]{0,61}[A-z0-9])?\.)+([A-z][A-z0-9]+|[A-z0-9]+[A-z]|([A-z0-9]+[A-z-]+[A-z0-9]?)+[A-z0-9]+)$/

完成它:)