如何在MVC中验证超过限制的数字

时间:2014-10-17 15:19:19

标签: asp.net-mvc

[Required(ErrorMessage = "Field is needed")]
[RegularExpression(@"^[0-9]+$", ErrorMessage = "Can only be 9 characters long")]
[Display(Name = "Number")]
 public string Number { get; set; } 

这就是我所拥有的。我确定这个数字只能有9个字符,但我也希望它不接受不以1或2开头的数字。

因此,如果有人试图创建一个333333333帐户,它就不会让他。我该怎么办?

这是视图

        <div class="editor-label">
            @Html.LabelFor(u => u.Number)
        </div>
        <div class="editor-field">
            @Html.TextBoxFor(u => u.Number)
            @Html.ValidationMessageFor(u => u.Number)
        </div>

3 个答案:

答案 0 :(得分:1)

你的正则表达式应该是这样的:

^[12]{1}\d{8}$
  • [12] {1} =列表中的任何字符
  • \ d {8} =后跟8 数字

要显示多个错误,您可以将其与其他验证规则(例如Range或StringLength)结合使用,但我不确定优先顺序。

[Required(ErrorMessage = "Field is needed")]
[Range(100000000,299999999, ErrorMessage="Must be 9 characters and start with 1 or 2")]
[RegularExpression(@"^[1-2][0-9]{0,8}$", ErrorMessage = "Can only be 9 characters long and start with 1 or 2")]
[Display(Name = "Number")]
public string Number { get; set; } 

答案 1 :(得分:0)

这是正则表达式,您只需要允许9个数字,第一个必须是1或2

^[1-2][0-9]{0,8}$

所以你的财产将是

[Required(ErrorMessage = "Field is needed")]
[RegularExpression(@"^[1-2][0-9]{0,8}$", ErrorMessage = "Can only be 9 characters long")]
[Display(Name = "Number")]
 public string Number { get; set; } 

注意:您的正则表达式可以让您拥有超过9个数字。

我使用Debuggex检查我的正则表达式,看到你的解释 https://www.debuggex.com/r/O0hseHDUms5Fhh0u

答案 2 :(得分:0)

您可以输入范围属性 [Range(1,Int32.MaxValue)]

你可以把自定义范围..例如范围到29999999 ..你可以把 [范围(1,299999999)] .. 这将满足您的要求,即数字仅以1和2开头。