我不知道这是否可以使用正则表达式,但这是场景。我匹配的字符串是空格分隔的列表(HTML类)。如果每个单词使用小写的a-z,空格和/或0-9,则字符串应匹配,除非单词以@开头。
理想的结果:
red-one green-two blue-three
=匹配的
redOne green-two blue-three
=不匹配(找到大写字母)
red-one blue-two @greenThree
=匹配(找到大写字母,但单词以@开头)
有什么想法吗?我认为这是不可能的,但也许是一个大师知道。
答案 0 :(得分:1)
您应该能够使用以下表达式来处理该场景,该场景基本上处理" word" level并确保每个单词都有一个可选的尾随空格(以处理空格分隔):
^((@[a-zA-Z-]+|([a-z-])+)\s?)+$
这基本上包括两个主要条件:
@[a-zA-Z-]+
强>
[a-z-])+
强>
这两个条件都允许在每个集合之后有一个可选的尾随空格字符,这将允许每个单词"在您的列表中进行单独评估。
示例强>
var tests = new []{
"red-one green-two blue-three",
"redOne green-two blue-three",
"red-one blue-two @greenThree"
};
foreach(var test in tests)
{
var regex = new Regex(@"^((@[a-zA-Z-]+|([a-z-])+)\s?)+$");
Console.WriteLine(regex.IsMatch(test));
}