c# - 正则表达式问题(在asp.net MVC5中)

标签 c# regex asp.net-mvc

希望有人能用正则表达式指出我在这里遗漏的内容。

这是我模型中的数据项:-

[Display(Name = "Serial to Search")]
[MaxLength(12)]
[RegularExpression(@"ABC|WXYZ\w{8,9}")]
public string SerialNo { get; set; }

这应该允许我匹配以 ABC 或 WXYZ 开头并具有另外 8 或 9 个字符/数字的序列号。

在我看来,我正在使用 jquery 非侵入式验证和 @Html.ValidationMessageFor 控件来显示错误。

我已经在 regex101.com 上使用以下测试字符串对此进行了测试:-

ABCGC1000BC5

它顺利通过,但在我看来我收到验证错误,特别是该字符串不符合正则表达式要求。谁能看到我错过了什么?谢谢。

regex101.com screenshot

最佳答案

您的正则表达式匹配两种类型的字符串:1) ABC 或 2) WXYZ 后跟 8 或 9 个字符。请记住,RegularExpressionAttribute 模式必须匹配整个字符串。即使 regex101.com 显示了 ABC12 的匹配项,它也不会在您的环境中匹配。

你需要使用分组,

(ABC|WXYZ)\w{8,9}
^        ^

非捕获组会更合适,因为您只是验证一个字符串而不是稍后使用捕获:

(?:ABC|WXYZ)\w{8,9}
^^^        ^

关于c# - 正则表达式问题(在asp.net MVC5中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54576107/

相关文章:

c# - 使用 javascript 从另一个按钮触发单击按钮事件

c# - 我正在尝试将我的旧 c++ 代码 "translate"转换为 c# 代码

c# - NHibernate 错误 - "could not initialize a collection"

python - 使用 re 查找多个标签之间的文本

regex - Perl 中的命令行跨多行

asp.net-mvc - 以列表形式显示 View 中多个表中的数据-ASP.Net MVC

c# - 检查对象列表中的至少一个对象是否满足条件 x

c# - 解析 IContainer

Python 正则表达式提取第一个大写单词或第一个和第二个单词(如果两者都大写)

asp.net - 有没有办法在 .NET Core 1.0 MVC 的 View 中使用授权策略?