ASP.NET MVC 正则表达式属性不适用于括号(文字)
Posted
技术标签:
【中文标题】ASP.NET MVC 正则表达式属性不适用于括号(文字)【英文标题】:ASP.NET MVC RegularExpression Attribute Not Working with Parenthesis (literal) 【发布时间】:2020-03-23 19:20:01 【问题描述】:这是我在 c# 中的示例正则表达式。
[RegularExpression(@"^[0-9]4-[0-9]4|\x28[0-9]3,5\x29$", ErrorMessage = "Invalid Format. xxxx-xxxx or xxxx-xxxx (xxxxx)")]
我已经尝试了这两个正则表达式,但仍然无法正常工作。
^[0-9]4-[0-9]4|\([0-9]3,5\)$ ^[0-9]4-[0-9]4|\x28[0-9]3,5\x29$这是 html 输出
data-val-regex-pattern="^[0-9]4-[0-9]4|\x28[0-9]3,5\x29$"
所需的输出样本
1234-1234 1234-1234 (123) 1111-1111 (11111) ...我正在https://regex101.com/ 测试正则表达式,并按预期工作,但在我的 c# 代码中没有。
即使输入有效,验证仍会触发
【问题讨论】:
@JakubRusilko 示例代码是什么意思? c#代码、razor代码还是html部分? 忽略我之前的评论 - 我删除了它。没有注意到您在属性中使用它。在下面试试我的答案。 我编辑了我的问题,因为 *** 也逃脱了我在问题中提出的强烈反对。 好的,那么“代码不起作用”到底是什么意思? 即使输入有效,验证也会触发。 【参考方案1】:问题是这个正则表达式确实匹配,但它不是完全匹配 - 只是部分匹配。使用这个:
^[0-9]4-[0-9]4( \([0-9]3,5\))?$
您的版本是另一种选择:第一部分或第二部分。我的版本是:始终是第一部分,也可能是第二部分(如果存在)。
【讨论】:
是的,但( \([0-9]3,5\))*
必须可能是( \([0-9]3,5\))?
,即允许它出现一次或零次。
你说得对,维克托。我的错。修复了答案,谢谢。
@JakubRusilko 这是有效的。谢谢。也感谢 Wiktor。以上是关于ASP.NET MVC 正则表达式属性不适用于括号(文字)的主要内容,如果未能解决你的问题,请参考以下文章
asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串
@Html.HiddenFor 不适用于 ASP.NET MVC 中的列表
RedirectToAction 不适用于 Tempdata - ASP.net 核心 MVC