加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 正则表达式匹配电子邮件

发布时间:2020-12-15 23:39:01 所属栏目:百科 来源:网络整理
导读:参见英文答案 How to validate an email address using a regular expression?????????????????????????????????????71个 ???????????? Best Regular Expression for Email Validation in C#????????????????????????????????????5个 我需要一个与电子邮件地
参见英文答案 > How to validate an email address using a regular expression?????????????????????????????????????71个
>???????????? Best Regular Expression for Email Validation in C#????????????????????????????????????5个
我需要一个与电子邮件地址匹配的正则表达式,本地@域符合以下要求:

局部部分可以包含A-z,0-9,点,下划线和短划线.

域可以包含A-z,点和破折号.域需要包含至少一个点.

我如何确保:域不能以点或破折号开头或结尾.并且域需要包含至少一个点?

这两件事确实让我在尝试解决它时遇到了问题.

尝试了以下内容:

Regex.IsMatch(email,@"(?:[^.-])([w.-])@([w.-])(?:[.-]$)");

解决方法

正确答案是:

仅验证@存在,域部分匹配一些简单规则,本地部分是< = 64个字符,整个事物是< = 254个字符. 是的,排除完全非法的字符,好的.并确保使用最后的@符号,而不是第一个.有关有效域名的所有商品,请参阅RFC 1035.也许RFC 819可以提供帮助.

如果您使用的是HTML,那么只需使用电子邮件输入,< input type =“email”autocomplete =“off”autocorrect =“off”>,您将获得大部分正确的东西,而不是 – 浏览器本身强制执行的框,您无需任何工作.请参阅email input validation at MDN.尽管请注意,根据浏览器的不同,即使这样也可能过于严格.请参阅this bug,其中浏览器的正确行为是接受电子邮件地址中的unicode(接受IDN标签),然后执行从U标签到??A标签的转换,然后才执行验证.

如果您愿意,也可以检查是否可以在DNS中找到域,但这是一个不必要且费力的步骤.

为什么我用巨幅印刷品大喊大叫呢?因为如此.臭.许多网站完全和可怕的错误.

首先,请阅读:I Knew How To Validate An Email Address Until I Read The RFC.

然后,跟我说理片刻.鉴于,正如文章所说:

>除了关于@符号的基本规则,各个部分的长度以及完全禁止的字符之外,电子邮件地址是否有效的唯一确定者是该电子邮件地址的发行者 – 域所有者.
>仅确定电子邮件地址是否真正可以到达任何人的唯一方法是向该地址发送电子邮件,并查看该人是否获得该电子邮件地址.

想想邮件.让我们假设有人给你一个有趣的地址,比如说,这个:

AAB!129 Thor Circle 1/2 atomized Pile$
Armelioborrigenduliamo,GRICKL,θ-niner *
18957382:90347342;21017900~19127734.6
THE MOON

既然您以前可能从未向月球发送邮件,您是否确定要按照您熟悉的地区标准判断月球邮件地址?你怎么知道这不是一个有效的地址?如果这些人真的很奇怪怎么办?如果您是一家计划与您的客户做生意并且赚取大量资金的公司 – 为什么他们会关心地址是否只要地址有效就很奇怪?

事实上,美国的标准商业惯例证明了这种无法验证其他权威机构地址的现实:邮政地址清理.这意味着,当有人向您提交邮寄地址时,您会向美国邮政局发送API调用,询问这是否是有效地址,并进一步询问其规范形式.那是因为只有邮局可以告诉你地址是否有效.即便如此,在你尝试发送一封信之前,你不知道你的信是否会传给任何人!

那么,为什么你会如此推定,以至于拒绝某人使用一个完全有效的电子邮件地址,他们的电子邮件提供商知道它是有效的(类似于向另一个国家甚至另一个星球发送邮件),只是因为它有某种格式你’不习惯或你无知认为是错的?

如果您只是因为拼写错误而试图避免收到错误的电子邮件地址,那么您仍然可以这样做.向用户显示“嘿,关于你的地址的东西看起来不太正确.你确定它包含你选择的这些字符吗?!#$%^& *()”{} []`?记住,如果我们无法通过电子邮件发送给您,您就无法创建帐户.“然后人们会收到警告,但如果他们真的想要,他们仍然可以提交.(好吧,是的,排除完全禁止的字符.我列出的那些.不一定有效.查一查.你应该看一下.真的.你不应该接受一些随机网络人士的话.理解.)

继续,甚至让它有点痛苦 – 让他们提交两次.或者选中一个方框并再次提交.只是不要阻止他们使用他们想要的任何东西.

我个人有时决定不使用无法接受本地部分(在@之前)加号的电子邮件地址的网站或服务.如果我只是必须拥有帐户,我会咬牙切齿,有点生气,然后提交一个与我真正想要使用的地址不同的地址.

除非您真的想减少可以与之合作的客户群.然后继续进行限制……

好的,此时,你讨厌我

你以为我反应过度了.您只想验证您的电子邮件地址!会这么难吗?事实上,你只是会忽略我并继续写下一个能完成这项工作的人.这够好了.

好吧.如果你不理解原因,那么here’s some regex for you that does it right.(只是,我实际上并不知道它是否正确,但我愿意打赌它是一个更接近正确的视线比任何人都在这里在不到几天和几天的工作中自己拿出来.)

神奇的电子邮件验证正则表达式

(?:(?:rn)?[ t])*(?:(?:(?:[^()<>@,;:".[] 00-31]+(?:(?:(?:rn)?[ t]
)+|Z|(?=[["()<>@,;:".[]]))|"(?:[^"r]|.|(?:(?:rn)?[ t]))*"(?:(?:
rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:".[] 00-31]+(?:(?:(
?:rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|"(?:[^"r]|.|(?:(?:rn)?[ 
t]))*"(?:(?:rn)?[ t])*))*@(?:(?:rn)?[ t])*(?:[^()<>@,;:".[] 00-
31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*
](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:".[] 00-31]+
(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:
(?:rn)?[ t])*))*|(?:[^()<>@,;:".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z
|(?=[["()<>@,;:".[]]))|"(?:[^"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)
?[ t])*)*&;(?:(?:rn)?[ t])*(?:@(?:[^()<>@,;:".[] 00-31]+(?:(?:(?:
rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[
 t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:".[] 00-31]+(?:(?:(?:rn)
?[ t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t]
)*))*(?:,@(?:(?:rn)?[ t])*(?:[^()<>@,;:".[] 00-31]+(?:(?:(?:rn)?[
 t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*
)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*))*)
*:(?:(?:rn)?[ t])*)?(?:[^()<>@,;:".[] 00-31]+(?:(?:(?:rn)?[ t])+
|Z|(?=[["()<>@,;:".[]]))|"(?:[^"r]|.|(?:(?:rn)?[ t]))*"(?:(?:r
n)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:".[] 00-31]+(?:(?:(?:
rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|"(?:[^"r]|.|(?:(?:rn)?[ t
]))*"(?:(?:rn)?[ t])*))*@(?:(?:rn)?[ t])*(?:[^()<>@,;:".[] 00-31
]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](
?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:".[] 00-31]+(?
:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:(?
:rn)?[ t])*))*&;(?:(?:rn)?[ t])*)|(?:[^()<>@,;:".[] 00-31]+(?:(?
:(?:rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|"(?:[^"r]|.|(?:(?:rn)?
[ t]))*"(?:(?:rn)?[ t])*)*:(?:(?:rn)?[ t])*(?:(?:(?:[^()<>@,;:".[] 
00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|"(?:[^"r]|
.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>
@,;:".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|"
(?:[^"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*))*@(?:(?:rn)?[ t]
)*(?:[^()<>@,;:
".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?
:[^()<>@,;:".[
]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*))*|(?:[^()<>@,;:".[] 00-
31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|"(?:[^"r]|.|(
?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*)*&;(?:(?:rn)?[ t])*(?:@(?:[^()<>@,;
:".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|[([
^[]r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:"
.[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|[([^[
]r]|.)*](?:(?:rn)?[ t])*))*(?:,;:".
[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|[([^[]
r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:".[]]))|[([^[]r]
|.)*](?:(?:rn)?[ t])*))*)*:(?:(?:rn)?[ t])*)?(?:[^()<>@,;:".[] 
00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>@,;:".[]]))|"(?:[^"r]|
.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[^()<>@,;:".[]]))|"(?
:[^"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*))*@(?:(?:rn)?[ t])*
(?:[^()<>@,;:".
[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t])*(?:[
^()<>@,;:".[]
]))|[([^[]r]|.)*](?:(?:rn)?[ t])*))*&;(?:(?:rn)?[ t])*)(?:,s*(
?:(?:[^()<>@,;:
".[]]))|"(?:[^"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*)(?:.(?:(
?:rn)?[ t])*(?:[^()<>@,;:".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[
["()<>@,;:".[]]))|"(?:[^"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t
])*))*@(?:(?:rn)?[ t])*(?:[^()<>@,;:".[] 00-31]+(?:(?:(?:rn)?[ t
])+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*)(?
:.(?:(?:rn)?[ t])*(?:[^()<>@,;:".[] 00-31]+(?:(?:(?:rn)?[ t])+|
Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*))*|(?:
[^()<>@,;:".[
]]))|"(?:[^"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*)*&;(?:(?:rn)
?[ t])*(?:@(?:[^()<>@,;:".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["
()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)
?[ t])*(?:[^()<>@,;:".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[["()<>
@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*))*(?:,@(?:(?:rn)?[
 t])*(?:[^()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*)(?:.(?:(?:rn)?[ t]
)*(?:[^()<>@,;:
".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*))*)*:(?:(?:rn)?[ t])*)?
(?:[^()<>@,;:".
[]]))|"(?:[^"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])*)(?:.(?:(?:
rn)?[ t])*(?:[^()<>@,;:".[] 00-31]+(?:(?:(?:rn)?[ t])+|Z|(?=[[
"()<>@,;:".[]]))|"(?:[^"r]|.|(?:(?:rn)?[ t]))*"(?:(?:rn)?[ t])
*))*@(?:(?:rn)?[ t])*(?:[^()<>@,;:".[] 00-31]+(?:(?:(?:rn)?[ t])
+|Z|(?=[["()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*)(?:
.(?:(?:rn)?[ t])*(?:[^()<>@,;:".[]]))|[([^[]r]|.)*](?:(?:rn)?[ t])*))*&;(?:(
?:rn)?[ t])*))*)?;s*)

当然,它已被打破.删除换行符.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读