我正在尝试对.Net 中的正则表达式应用否定。这没用。当字符串具有有效的姓氏时,reg ex 不应匹配。对于无效的姓氏,它应该匹配。有效名称仅允许字符、空格、单引号和 1-40 之间的长度。有人建议解析 XML,我不想这样做。我知道还有另一种方法可以通过删除 reg ex 中的否定并反转代码中的匹配条件来做到这一点。但我也不想这样。为此,我需要纯 reg ex 解决方案。
这是我的代码。这确实与有效的姓氏相匹配。但我不想匹配。
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 ex 匹配
情况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>
当姓氏无效时,reg ex 应该匹配
案例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>
如果您需要更多信息,请告诉我