C# 电子邮件地址验证

标签 c# .net asp.net regex validation

我只想澄清一件事。根据客户要求,我们必须创建一个正则表达式,以允许在电子邮件地址中使用撇号。

根据 RFC 标准,我的问题是电子邮件地址会包含撇号吗?如果是这样,如何重新创建正则表达式 以允许撇号

最佳答案

下面的正则表达式实现了官方RFC 2822电子邮件地址的标准。不建议在实际应用中使用此正则表达式。它表明,对于正则表达式,始终需要在准确与实用之间进行权衡。

(?:[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])+)\])

你可以使用简化的:

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

是的,电子邮件中允许使用撇号,只要它不在域名中即可。

关于C# 电子邮件地址验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6449367/

相关文章:

c# - 如何从 Entity Framework 4 的 LINQ 表达式中执行 Oracle 函数?

c# - c# 中是否有等效的 SQL NULLIF 函数?

c# - 我们是否可以在.NET 2.0 中使用WPF?

c# - 不是那个懒惰的正则表达式匹配吗?

asp.net - 有没有办法加快asp.net 中的编辑-编译-调试周期?

c# - JSON 压缩器/解压缩器工具

c# - JSON 将 JsonResult 转换为 javascript 字符串而不编码引号

c# - 如何使字符串插值与字典一起工作

c# - SendGrid 电子邮件不适用于生产环境

asp.net - 多个控件的必填字段验证器问题