我想在.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