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

Flutter中使用正则表达式验证以01开头的11位手机号码

Flutter中验证以01开头的11位手机号码(正则实现)

要在Flutter里实现以01开头的11位手机号合法性验证,直接用Dart内置的RegExp类配合对应正则表达式就能快速搞定。

正则表达式说明

使用的正则表达式为:^01\d{9}$
各部分含义:

  • ^:匹配字符串起始位置,确保号码严格以01开头
  • 01:固定前缀,满足需求的手机号开头规则
  • \d{9}:匹配9个阿拉伯数字(0-9),加上前缀的2位,刚好凑够11位
  • $:匹配字符串结束位置,确保号码长度恰好为11位,不会出现多余字符

具体代码实现

可以封装一个工具函数,方便在项目中复用:

// 定义全局正则表达式实例
final RegExp _mobileRegExp = RegExp(r'^01\d{9}$');

// 验证手机号合法性的函数
bool isMobileValid(String phoneNumber) {
  // 先过滤空输入
  if (phoneNumber.isEmpty) return false;
  return _mobileRegExp.hasMatch(phoneNumber);
}

使用示例

void main() {
  print(isMobileValid('01234567890')); // 输出: true(有效号码)
  print(isMobileValid('12345678901')); // 输出: false(非01开头)
  print(isMobileValid('0123456789'));  // 输出: false(仅10位)
  print(isMobileValid('012345678901'));// 输出: false(12位)
  print(isMobileValid('01a34567890')); // 输出: false(含非数字字符)
}

额外场景处理

如果你的业务场景中可能存在带空格、括号或横杠的手机号(比如012-3456-7890),可以先对输入做预处理,移除所有非数字字符后再验证:

bool isMobileValidWithCleanup(String phoneNumber) {
  if (phoneNumber.isEmpty) return false;
  // 移除所有非数字字符
  final cleanedNumber = phoneNumber.replaceAll(RegExp(r'\D'), '');
  return _mobileRegExp.hasMatch(cleanedNumber);
}

内容的提问来源于stack exchange,提问作者Rezaul Karim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:42:07