输入的手机号码的值显示“非有效号码”,尽管输入10位数的正则表达式

时间:2017-12-28 08:52:49

标签: regex asp.net-mvc

我试图对用户输入的手机号码进行验证,尽管为10位手机号码添加正则表达式。

这是Model类

 public partial class student1
    {
        public int StudentId { get; set; }
        [Required]
        [StringLength(30)]
        public string Name { get; set; }
        public string Branch { get; set; }
        [Display(Name = "Mobile Number:")]
       [Required(ErrorMessage = "Mobile Number is required.")]

        [RegularExpression("^([07][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | 8[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | 9[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])", ErrorMessage = "Invalid Mobile Number.")]
        public Nullable<int> Mobile { get; set; }
    }

Create查看

   @Html.EditorFor(model => model.Mobile)
   @Html.ValidationMessageFor(model => model.Mobile, "", new { @class = "text-danger" })

当我运行它时,对于输入少于10的手机号码,它会显示我写的错误消息。但是对于10或更高的价值,我收到了一条新消息

  

值'999999999'对手机号码无效:。

我不知道这条消息来自哪里。另外,为什么它不接受10位数值?

2 个答案:

答案 0 :(得分:2)

64位计算机的c#中int

最大

  

2147483647

小于9999999999因此它是int的溢出,因此在模型绑定之前,它是来自Controller的模型验证的错误消息。

int转换为long

public Nullable<long> Mobile { get; set; }

同时检查正则表达式,它也可能会遗漏一些有效数字。

int c#source的最大值:

https://msdn.microsoft.com/en-us/library/system.int32.maxvalue(v=vs.110).aspx

What is the int.MaxValue on a 64-bit PC?

答案 1 :(得分:1)

尝试正则表达式= ^(\ d {1,3} [ - ]?)?\ d {10} $