好吧,我绝对是这个星球上最差的正则表达式编写者。在 15 分钟把我的脑袋从 table 上摔下来却一事无成之后,我认为这个伟大的社区可以帮助我。
我知道这很简单,但我需要一个符合以下条件的正则表达式:
SomeWord_SomeSecondWord
或
SomeWord_SomeSecondWord_SomeThirdWord
用简单的英语:
- 下划线分隔的两个或三个单词(一组字母)。
- 每个词 block 必须以大写字母开头,至少包含两个字符,并且只能包含字母 a-z。
如有任何帮助,我们将不胜感激。我正在尝试编写一个正则表达式来匹配 StyleCop/ReSharper 验证的单元测试方法名称。对于正则表达式,我有绝对的心理障碍。
请您参考如下方法:
试试这个:
@"^[A-Z][a-zA-Z]+(?:_[A-Z][a-zA-Z]+){1,2}$"
[A-Z][a-zA-Z]+ 确保它以大写字母开头,使用 + 将确保至少有一个其他字符,满足最少 2 个字符的要求。
这是一个实际的例子:
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);
}
