【问题标题】:Convert JavaScript RegEx to C# RegEx for email validation将 JavaScript RegEx 转换为 C# RegEx 以进行电子邮件验证
【发布时间】:2012-09-25 04:32:57
【问题描述】:

如何将以下 javascript 正则表达式转换为 c# 正则表达式?

 function isValidEmailAddress(emailAddress) {
               var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
               return pattern.test(emailAddress);
 }

简单地将字符串传递给 C# Regex 类并返回 Match 是行不通的。我认为字符串需要编辑,但我不是正则表达式专家。

【问题讨论】:

  • 我不想调试那个正则表达式。

标签: c# javascript regex


【解决方案1】:

当您使用 C# 时,您应该能够使用 System.Net.Mail.MailAddress 类来验证电子邮件地址。你可以这样使用它:

public bool IsValidEmailAddress(string emailAddress)
{
    try
    {
        MailAddress m = new MailAddress(emailAddress);
        return true;
    }
    catch (FormatException)
    {
        return false;
    }
}

有时你可以不用正则表达式,特别是如果你不是专家的话。

【讨论】:

  • 这有多全面?我担心的是它不会那么详细,因此服务器端不会那么健壮。抱歉,我只是想确保我的电子邮件验证系统不弱。
  • 我以为您想使用 C# 验证电子邮件地址,抱歉。如果不是这样,我认为您应该编辑您的问题以解释您要实现的目标...
  • 我正在尝试验证客户端和服务器上的电子邮件地址,因此我使用 javascript 代码进行客户端验证。
【解决方案2】:

@Mark13426:这似乎是由于那里使用了 unicode 和八进制符号 beig。

相反,您绝对可以使用这个正则表达式:

^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$

更多信息,请参考:

http://msdn.microsoft.com/en-us/library/ff650303.aspx

http://msdn.microsoft.com/en-us/library/01escwtf.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 2019-04-15
    • 2011-01-03
    • 1970-01-01
    相关资源
    最近更新 更多