正则表达式导致我的单元测试失败。为什么?

时间:2014-12-06 16:36:42

标签: c# regex unit-testing

我在使用正则表达式时非常艰难。我的单位测试失败了。我尝试了几种不同的方法但没有成功。也许我错了。我需要它使用一个单词(小号)或两个单词和一个空格(法国号角)。

我遇到问题的属性。

public string Name
    {
        get { return _name; }
        set
        {
            string source = propTI.ToTitleCase(value.Trim());
            string pattern = "^[A-Z][a-z]*\\s[A-Z][a-z]*$";
            if (Regex.IsMatch(source, pattern))
                _name = source;
            else
            {
                throw new ArgumentException("Name must have proper case!");
            }
        }
    }

我也试过“^([A-Z] [a-z] \ s) $”作为模式。

构造

public Instrument() : this(DefaultName, DefaultCategory) { }

单元测试:

  [TestMethod]   
  public void Instrument_Name_IsValid()
    {
        var na = "french";
        var goodna = "French";
        var inst = new Instrument();
        inst.Name = na;
        Assert.AreEqual(goodna, inst.Name);
    }

我应该将什么用于正则表达式?既然这些显然不起作用了吗?

1 个答案:

答案 0 :(得分:1)

Casimir et Hippolyte有答案:

^[A-Z][a-z]*(?:\\s[A-Z][a-z]*)*$