【问题标题】:C# and javascript email validation regex [closed]C# 和 javascript 电子邮件验证正则表达式 [关闭]
【发布时间】:2014-06-24 15:48:18
【问题描述】:

我有 ASP.NET 项目,我需要检查电子邮件是否正确。我一直使用该脚本,但它在 asp.net 中失败,因为 @ 是错误符号。

function emailvalidate(e)
{
    var b=/^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$/;
    return b.test(e);
}

我该如何解决这个问题?通过 JavaScript 而非 ASP.NET 或 C# 检查电子邮件很重要。

附:我真的是 ASP.NET 和 JavaScript RegEx 的新手。

【问题讨论】:

  • 只是想逃避@。
  • "但它在 asp.net 中失败,因为 @ 是错误符号。" 什么?你的 JavaScript 到底出了什么问题?您是否收到任何错误或意外结果?
  • 我认为您的代码没有问题 - 假设它是某个静态 .js 文件的一部分(它应该属于的地方),我看不出@ 会成为问题的原因。可能您遗漏了更多信息(即,您可能使用 Razor 或类似的东西在页面上呈现此脚本),但此时无法说出正确的答案。

标签: c# javascript asp.net regex


【解决方案1】:

您使用的是 Razor 视图引擎吗?如果是这样,如果您将此脚本添加到 cshtml 文件本身,则需要转义这些 @ 符号

function emailvalidate(e)
{
    var b=/^[^@@\s]+@@[^@@\.\s]+(\.[^@@\.\s]+)+$/;
    return b.test(e);
}

或者您可以将正则表达式包装在@Html.Raw 中,如 deherch 所述:

var b = @Html.Raw(@"/^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$/");

您还可以将此函数添加到包含所有其他常用 JS 函数的脚本文件中。这样,您根本不需要转义剃刀语法。

Win 提到您要使用服务器端验证。我会说最好同时使用两者。客户端验证可以从一开始就阻止它访问服务器。还有服务器端验证,因为您永远无法相信客户端传入的内容。

【讨论】:

  • 可能更容易将正则表达式包装在@Html.Raw 中,如下所示:var b = @Html.Raw(@"/^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$/");
  • 非常真实!谢谢 deherch
  • 旁注:当您编辑 .cshtml 文件时,Visual Studio 可能会抱怨它不是有效的 javascript,即使生成的 html/js 完全有效。如果你想摆脱那个警告,你可以添加+"",那么它会变成:var b = @Html.Raw(@"/^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$/")+"";我希望Visual Studio更聪明:)
【解决方案2】:

在 ASP.Net 中,您希望使用服务器端 MailAddress 来验证电子邮件,因为正则表达式本身不足以验证电子邮件地址。

try 
{
    address = new MailAddress(EMAIL_ADDRESS).Address;
} 
catch(FormatException ex) 
{
   // Log 
}

如果你真的想使用正则表达式,这里是link,它会让你哭泣。

【讨论】:

  • 这个问题特别指出:通过 JavaScript 检查电子邮件很重要,而不是 ASP.NET 或 C#。 我总体上同意你的说法,但这并不是真正的回答问题。
【解决方案3】:

尝试下面的代码来验证电子邮件的服务器端

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

或者你也可以看下面的链接

Reference URL

【讨论】:

    猜你喜欢
    • 2017-07-05
    • 2014-05-11
    • 2011-10-27
    • 2012-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多