gpt4 book ai didi

c# - RegularExpressionAttribute 的行为不同于 Regex 或 RegexStringValidator

转载 作者:太空宇宙 更新时间:2023-11-03 20:24:08 26 4
gpt4 key购买 nike

我使用 RegularExpressionAttribute像这样在我的 EF 元数据上:

[RegularExpression("[A-Z]+")]
public string Code { get; set; }

而且它正确地不允许我在字段中的任何地方输入除 A-Z 以外的任何内容。

在其他地方我想在代码中使用相同的 reg 表达式,所以我像这样转向 Regex:

var regex = new Regex("[A-Z]+");
Console.WriteLine(regex.IsMatch("B")); //true
Console.WriteLine(regex.IsMatch("1")); //false
Console.WriteLine(regex.IsMatch("A1")); //true - why?

还有 RegexStringValidator与 Regex 的工作原理相同。

我做错了什么?

最佳答案

var regex = new Regex("[A-Z]+");
Console.WriteLine(regex.IsMatch("A1")); //true - why?

该正则表达式表示匹配一个或多个大写拉丁字母。而“A1”包含一个大写的拉丁字母。

默认情况下,正则表达式匹配字符串中的任何地方。要匹配以“^字符串 anchor 开始开始并以“$字符串 anchor 结尾的整个字符串:

 var regex = new Regex("^[A-Z]+$");
Console.WriteLine(regex.IsMatch("A1"));

将显示false

(.NET正则表达式中有一整套anchors。)

关于c# - RegularExpressionAttribute 的行为不同于 Regex 或 RegexStringValidator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11651428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com