开发者

Regular expression to match SomeWord_SomeSecondWord_SomeThirdWord

Ok so I'm the absolute worst regular expression writer on the planet. Figured this great commu开发者_如何转开发nity could help me out after 15 minutes of bashing my head off the desk and getting nowhere.

I know this is simple, but I need a regular expression that matches the conditions of:

SomeWord_SomeSecondWord

or

SomeWord_SomeSecondWord_SomeThirdWord

In plain english:

  • two or three words (set of letters) separated by underscores.
  • Each word block must start with a capital letter, contain at least two characters and contain only letters a-z.

Any help would be greatly appreciated. I'm trying to write a regular expression to match unit testing method names for StyleCop/ReSharper validation. I have an absolute mental block when it comes to regex.


Try this:

@"^[A-Z][a-zA-Z]+(?:_[A-Z][a-zA-Z]+){1,2}$"

The [A-Z][a-zA-Z]+ ensures it starts with a capital letter, and the usage of + will ensure at least one other character, which satisfies the requirement of the 2 character minimum.

Here's an example of it in action:

string[] inputs =
{
    "SomeWord", "SomeFirstWord_SomeSecondWord",
    "SomeWord_SomeSecondWord_SomeThirdWord", "SomeWord_Some2ndWord"
};

string pattern = @"^[A-Z][a-zA-Z]+(?:_[A-Z][a-zA-Z]+){1,2}$";

foreach (var input in inputs)
{
    Console.WriteLine("{0}: {1}", Regex.IsMatch(input, pattern), input);
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜