希望有人能用正则表达式指出我在这里遗漏的内容。
这是我模型中的数据项:-
[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
它顺利通过,但在我看来我收到验证错误,特别是该字符串不符合正则表达式要求。谁能看到我错过了什么?谢谢。
最佳答案
您的正则表达式匹配两种类型的字符串: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/