【问题标题】:Why when I use RegularExpression as DataAnnotation is not recognizing the leading zeros?为什么当我使用正则表达式时 DataAnnotation 无法识别前导零?
【发布时间】:2013-08-20 01:13:50
【问题描述】:

我的实体中有一个字段,它有一个正则表达式作为 DataAnnotation:

@"^\$?([0-9]{6})(.[0-9]){0,1}?$"

而且它总是可以正常工作,除非我在数字前使用零。

例如

- 123456.1    Work
- 012345.1    Does Not Work

如果我用 Regex.IsMatch 做同样的验证,它说没问题。

如何强制 MVC 在进行验证时保留前导零?

【问题讨论】:

  • @hwnd 它应该让你在小数点后写一个数字,或者什么都不写。如果我移除锚点,我将无法完成最后一部分。
  • @hwnd 我没有写下来,因为它工作正常。我刚刚更新了示例。
  • @hwnd 我将它放在一个单独的组中的唯一原因是因为我想指定可能只有一次,也可能没有。
  • 我认为这不是您的问题,但是如果您希望它仅匹配文字 . 字符,则应该转义第二组中的句点。否则它将匹配“123456Q1”、“123456@1”等。
  • {0,1} 后跟 ? 是多余的。

标签: c# asp.net-mvc regex validation


【解决方案1】:

最后我使用了一个字符串变量,这就是有效的:

^\$?([0-9]{6})(\.[0-9])?$

  • 我听从了@Sinsedrix 和@Michelle 的建议

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多