我试图使用正则表达式验证器。诀窍在于它可能需要更多的逻辑,但我希望我能用正则表达式完成这个。因此,如果要测试的字符串以@ faxmail.com结尾,那么它也必须以" 1,"开头。否则,基本上没有在@ faxmail.com结束的任何事情都是匹配的。所以,如果我用C#做到这一点,它可能看起来像
if(someString.EndsWith("@faxmail.com"))
{
if(!someString.StartsWith("1,")) return false;
} else {
return true;
}
我尝试了类似(?(?=^(\w+)@faxmail.com$)(^1)))
的内容,但它部分有效。最后我需要这样的东西:
1,test@faxmail.com (passes)
fail@faxmail.com (fails)
test@testmail.com (passes)
我试图通过正则表达式实现的目标是什么?或者我只是需要使用C#逻辑?
答案 0 :(得分:2)
你可以试试这个Regex:
Regex regex = new Regex(@"^1.*(@faxmail.com)$|.*(?<!@faxmail.com)$");
这里有两个正则表达式匹配:
您可以使用以下测试用例来验证:
Regex regex = new Regex(@"^1.*(@faxmail.com)$|.*(?<!@faxmail.com)$");
Console.WriteLine(regex.IsMatch("1,test@faxmail.com")); //True
Console.WriteLine(regex.IsMatch("fail@faxmail.com")); //False
Console.WriteLine(regex.IsMatch("test@testmail.com")); //True
Console.WriteLine(regex.IsMatch("faxmail@faxmail.com@testmail.com")); //True
Console.WriteLine(regex.IsMatch("2,test@faxmail.com")); //False