我想在.Net中对正则表达式应用否定。这是行不通的。当字符串有效的姓氏时reg不应该匹配。对于无效的姓氏,它应该匹配。有效名称只允许在1-40之间的文字,空格,单引号和长度。有人建议解析XML,我不想那样做。我知道还有另外一种方法可以通过删除reg ex中的否定字符来反转代码中的匹配条件。但我也不想那样。我需要纯粹的注册前解决方案。Reg Ex negation不能在XML字符串中工作
这是我的代码。这符合有效的姓氏。但我不想匹配。
string toBevalidated = @"<FirstName>SomeName</FirstName><LastName>Some</LastName><Address1>Addre1</Address1>";
var regex = new Regex(@"<LastName>([^a-zA-Z'\s])|(.{41,})</LastName>");
var match = regex.Match(toBevalidated);
// Check to see if a match was found
if (match.Success)
{
Console.WriteLine("Success");
}
else
{
Console.WriteLine("Failed");
}
编辑: 这里有困惑让我举一些例子说明什么,我打算到。当姓氏是有效的时候reg ex不应该匹配。例如样品下面不应与REG前
情况1
<FirstName>SomeName</FirstName><LastName>Brian</LastName><Address1>Addre1</Address1>
案例2
<FirstName>SomeName</FirstName><LastName>O'neil</LastName><Address1>Addre1</Address1>
情况下3
<FirstName>SomeName</FirstName><LastName>Peter John</LastName><Address1>Addre1</Address1>
当最后一个名字是无效的,章恩宜匹配
情况下4
<FirstName>SomeName</FirstName><LastName>Brian123</LastName><Address1>Addre1</Address1>
情况下5
<FirstName>SomeName</FirstName><LastName>#Brian</LastName><Address1>Addre1</Address1>
情况下6
<FirstName>SomeName</FirstName><LastName>BrianBrianBrianBrianBrianBrianBrianBrianBrianBrian</LastName><Address1>Addre1</Address1>
,如果您需要了解更多信息,请让我知道
*为什么*你不想解析XML?在XML上使用正则表达式是一个糟糕的主意 - 它非常脆弱。 – 2010-10-28 15:16:36
为什么你不会继续在你昨天问的问题是什么改变了开始一个新的,http://stackoverflow.com/questions/4037631/reg-ex-negation/4037708#4037708 – 2010-10-28 15:19:49
请阅读http:// tinyurl.com/so-hints提供改善问题的方法。 – 2010-10-28 15:21:14