【问题标题】:Regular Expression validation fails in MVC [duplicate]MVC中的正则表达式验证失败[重复]
【发布时间】:2016-02-03 14:29:26
【问题描述】:

我在 MVC 中使用 DataAnnotations 来验证 PAN 卡号。如果我在https://regex101.com/ 上在线检查我的表达式,它会正确执行。但是当我在我的应用程序中尝试它时,它会给出如下图所示的错误消息。

我不明白为什么这会失败。好吧,我已经使用以下代码在模型中实现了这一点。那么如何实现呢?

[DisplayName("PAN Number")]
[Required(ErrorMessage = "* Please Enter PAN No.")]
[RegularExpression(@"/[A-Z]{5}\d{4}[A-Z]{1}/", ErrorMessage = "* Invalid PAN Number")]
public string US_PAN { get; set; }

【问题讨论】:

  • 添加anchors,你的正则表达式变成/^[A-Z]{5}\d{4}[A-Z]$/。最后一个[A-Z] 不需要{1},因为它本身匹配单个字母。
  • @noob:它是一个RegularExpressionAttribute,模式默认锚定(模式应该匹配整个输入)。

标签: c# regex asp.net-mvc data-annotations


【解决方案1】:

.NET 中的正则表达式不需要包含在 // 对中。

regex101 默认使用 php 风格的正则表达式 - 这就是为什么它需要用 // 括起来的正则表达式。

所以你的属性应该只是

[RegularExpression(@"[A-Z]{5}\d{4}[A-Z]{1}", ErrorMessage = "* Invalid PAN Number")]

【讨论】:

  • 为什么要解释已经解释的内容? stackoverflow.com/questions/31560080/…
  • @WiktorStribiżew 您能否建议一些基于原始问题内容的搜索查询,以显示您提到的答案?像“c# regex delimiters”这样的东西没有成功,我认为除了答案的作者之外,几乎不可能为任何人找到它
  • 我知道,我找不到。但是这个问题是 1) 频繁出现,2) 更像是拼写错误而不是真正的问题,3) 对于至少使用过一次正则表达式的任何 C# 程序员来说都是显而易见的。我关闭了诸如欺骗之类的问题(我保留了一份清单)。像这样的问题不会问“为什么我的正则表达式分隔符模式不起作用”,因为问题作者不知道正则表达式分隔符是什么,因此使用 SO/Google 上的搜索系统很难找到一个。我编辑了我用作原始问题的标题,以便使用搜索引擎更容易找到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
  • 2020-11-21
  • 1970-01-01
  • 2012-03-29
  • 1970-01-01
  • 2017-01-31
相关资源
最近更新 更多