【问题标题】:Regex not matching [duplicate]正则表达式不匹配[重复]
【发布时间】:2012-10-31 19:35:47
【问题描述】:

可能重复:
Using a regular expression to validate an email address
Email Validation - Regular Expression

我正在使用以下代码在 C# 中验证电子邮件地址,但不确定为什么总是失败:

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

        if (Regex.IsMatch(regEx, "abcde@gmail.com", RegexOptions.IgnoreCase))
            return true;
        else
            return false;

请有人指出我在这里缺少什么?

【问题讨论】:

  • 这不是重复的。问题不是“如何验证电子邮件地址”,而是“为什么这个(已经定义的)正则表达式不匹配”​​。
  • 我不知道为什么这个问题被关闭了。我有一个问题,为什么正则表达式不起作用并且答案是使用了不正确的格式加上使用 var 来声明而不是字符串。我没有要求正则表达式模式!

标签: c# regex validation email-validation


【解决方案1】:

试试这个:

[Test]
public void EmailTest()
{
    var pattern = @"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})";
    Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
    var address = "abcde@gmail.com";
    Assert.IsTrue(Regex.IsMatch(address, pattern,RegexOptions.IgnoreCase));
    Assert.IsTrue(regex.IsMatch(address));
}

你的字符串和模式的顺序错误。

也可以查看thread

【讨论】:

  • 两个 reg 表达式是相同的.......RMN 上传了相同的东西检查一次
  • @Johan - 我应该为 Assert 引用哪个 dll?
  • 我使用 nUnit 但 ms test 具有相同的语法。请注意,与编写控制台应用程序或其他东西相比,测试只是断言它有效的一种简单方法。
  • @Johan-test 也需要参考。
  • 好的,对不起。参考 nunit.framework.dll 并使用 NUnit.Framework;也许这令人困惑,但在测试中,比赛是通过两种方式完成的。
【解决方案2】:

你的IsMatch parameters 弄错了;第一个是输入,第二个是模式。

【讨论】:

  • 感谢您的指出。我注意到了这一点并修改了我的代码,但仍然出现错误。 System.text.regularexpression.regex.ismatch(string, int) 的最佳重载方法匹配具有无效参数。
  • 你应该拥有Regex.IsMatch("abcde@gmail.com", regEx, RegexOptions.IgnoreCase) - 这就是你现在拥有的吗?
  • 我在修改后的代码中将模式分配给了 var regEx,而不是字符串。它现在正在工作。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
相关资源
最近更新 更多