Regex 输入的手机号码的值,显示“0”;“不是有效的数字”;尽管输入了10位数的正则表达式
我试图对用户输入的手机号码进行验证,尽管为10位手机号码输入了正则表达式 这是模型课Regex 输入的手机号码的值,显示“0”;“不是有效的数字”;尽管输入了10位数的正则表达式,regex,asp.net-mvc,Regex,Asp.net Mvc,我试图对用户输入的手机号码进行验证,尽管为10位手机号码输入了正则表达式 这是模型课 public partial class student1 { public int StudentId { get; set; } [Required] [StringLength(30)] public string Name { get; set; } public string Branch { get; set;
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; }
}
当我运行它时,对于输入的手机号码小于10,它会显示我写的错误消息。但对于值10或更大的值,我得到了一条新消息
值“999999999”对于移动电话号码无效:
我不知道这个消息是从哪里来的。另外,为什么它不接受10位数的值呢?试试正则表达式=^(\d{1,3}[-])?\d{10}$对于c中的
int
,最大值是对于64位机器是
2147483647
它小于9999999999,所以它是int溢出,所以它是模型绑定之前控制器发出的模型验证错误消息
将int
转换为long
public Nullable<long> Mobile { get; set; }
public可空移动{get;set;}
还要检查正则表达式,它可能也会丢失一些有效数字
int
c的最大值#来源:
Pranav Singh关于C#中的int length是正确的,但请向我们解释一下你是如何得出这个正则表达式的,你希望手机号码的表达式是什么。为了给您提供更多帮助,请尝试解释您用来让我们了解您想法的每个符号。如果您希望保留前导的
0
,则不应将int
(或任何数字类型)用作电话号码。除此之外,电话号码通常使用其他字符输入:+
,-
,空格
,(
,)
。在我使用过的所有应用程序中,它都是字符串类型。@PeterB那么你的意思是在数据库中我应该将数据类型更改为varchar?@TasosMoustakas在我的国家,从7/8/9开始使用10位移动电话号码,就是这样。太棒了!!谢谢你,先生!:)我也需要更改数据库吗?我使用了数据库优先的方法
public Nullable<long> Mobile { get; set; }