【问题标题】:Regex validation for email with specific condition具有特定条件的电子邮件的正则表达式验证
【发布时间】:2021-11-22 00:15:02
【问题描述】:

目前我正在使用以下代码来验证电子邮件

public static bool IsValidEmail(string email)
        {
            var r = new Regex(@"^([0-9a-zA-Z]([-\.\'\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$");
            return !string.IsNullOrEmpty(email) && r.IsMatch(email);
        }

现在要验证此“abc@a.bb.com”电子邮件是否为有效电子邮件 ID。正则表达式需要做哪些改变?

【问题讨论】:

  • 不使用正则表达式?即使emailregex.com 有时也是错误的。你可以改用docs.microsoft.com/en-us/dotnet/api/…
  • @jeremy 感谢您的回复,我希望在我的正则表达式中进行必要的更改/编辑以接受“abc@a.bb.com”
  • ([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+ 仅匹配以字母数字开头和结尾的子域,因此必须包含 2 个字符。但我仍然不会尝试“修复”正则表达式,因为正则表达式永远会 100% 正确。不要试图用锤子做任何事情,使用正确的工具。如果您想检查电子邮件是否有效,请尝试发送验证码。

标签: c# .net regex


【解决方案1】:

使用此正则表达式并不是验证电子邮件的最佳方式。

但是,将您的正则表达式更正为您要求的模式,它将是这样的:

var r = new Regex(@"^([0-9a-zA-Z]([-\.\'\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z\.])+[.a-zA-Z]{2,9})$");

仍然坚持正则表达式,你可以在:https://www.ex-parrot.com/pdw/Mail-RFC822-Address.html中找到更完整的模式

我鼓励您按照@Jeremy Lakeman 的建议使用 Microsoft 文档作为电子邮件地址 -> https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.mailaddress.trycreate?view=net-5.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2017-07-12
    相关资源
    最近更新 更多