You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MVC中使用正则表达式验证11位以03开头的手机号

MVC中验证以03开头的11位手机号码的正则表达式方案

首先,先明确你的需求:手机号码必须是11位数字,且以03开头,后续跟随9位数字(格式如03XXXXXXXXX)。接下来我们分析你提供的代码里的问题,并给出正确的实现。

现有正则表达式的问题

你代码里的正则@"^\[0]{1}\[3]{1}\d{9}$"存在两个关键错误:

  • 错误使用了转义符\:\[0]会匹配字面意义的[0]字符,而不是数字0。这里不需要用方括号包裹单个数字,直接写数字即可。
  • 冗余的{1}:单个字符默认就匹配1次,{1}完全可以省略,不会影响功能只会增加代码冗余。

另外还有一个非正则的问题:你的ContactNo字段用了decimal类型,这并不合适——手机号码是字符串标识,不是数值,用decimal会丢失前导零(比如03123456789存为decimal会变成3123456789),而且从设计角度看,字符串类型更适合存储这类标识性内容。

修正后的代码实现

把正则表达式改成正确的格式,同时建议将字段类型改为string:

[Column("ContactNo")]
[Required(ErrorMessage = "Contact No is required..."), Display(Name = "Contact No")]
[RegularExpression(@"^03\d{9}$", ErrorMessage = "Invalid Contact No")]
public string ContactNo { get; set; }

正则表达式解释

@"^03\d{9}$"的含义:

  • ^:匹配字符串的起始位置,确保前面没有多余字符
  • 03:强制匹配开头的03
  • \d{9}:匹配连续的9个数字(\d代表任意数字,{9}表示恰好9次)
  • $:匹配字符串的结束位置,确保后面没有多余字符

这样就能严格验证符合你需求的手机号码了。

内容的提问来源于stack exchange,提问作者Farman Ud Din

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:57:24