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
相关产品推荐
相关产品推荐

