2014-12-06 63 views
0

我正在用正则表达式来度过一段非常艰难的时光。我正在导致我的单元测试失败。我尝试了几种不同的方式,但没有成功。也许我错了。我需要它使用一个词(小号)或两个词与一个空间(法国号角)。正则表达式导致我的失败单元测试。为什么?

说我有一个问题,物业。

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); 
    } 

我应该使用什么的正则表达式?由于这些显然不起作用?

+0

这个问题可能是强制性的空间'\ s' – 2014-12-06 16:44:05

+0

我认为这可能是一个问题。你怎么做一个“可能”或有时候空间? – Shades9323 2014-12-06 16:45:17

+3

像这样:'^ [A-Z] [A-Z] *?(?:\\ S [A-Z] [A-Z] *)$'或与'*'代替'',以允许两个以上的字。 – 2014-12-06 16:47:07

回答

1

卡西米尔等伊波利特了答案:

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