Flutter如何验证手机号

在Flutter开发中,如何对手机号输入进行有效性验证?是否有推荐的验证方法或插件?

2 回复

Flutter中验证手机号可使用正则表达式。例如:

bool isPhoneValid(String phone) {
  return RegExp(r'^1[3-9]\d{9}$').hasMatch(phone);
}

此正则匹配中国大陆11位手机号,可根据需求调整。

更多关于Flutter如何验证手机号的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中验证手机号通常使用正则表达式,结合字符串验证方法。以下是常见的实现方式:

1. 基础正则验证

bool isPhoneValid(String phone) {
  // 中国手机号正则(11位,1开头)
  final RegExp phoneRegex = RegExp(r'^1[3-9]\d{9}$');
  return phoneRegex.hasMatch(phone);
}

// 使用示例
print(isPhoneValid('13800138000')); // true
print(isPhoneValid('123456'));       // false

2. 带国际区号的验证

bool isInternationalPhoneValid(String phone) {
  // 支持国际格式(+86 13800138000)
  final RegExp phoneRegex = RegExp(r'^(\+?86)?1[3-9]\d{9}$');
  return phoneRegex.hasMatch(phone.replaceAll(' ', ''));
}

3. 表单验证集成

TextFormField(
  decoration: InputDecoration(labelText: '手机号'),
  validator: (value) {
    if (value == null || value.isEmpty) {
      return '请输入手机号';
    }
    if (!RegExp(r'^1[3-9]\d{9}$').hasMatch(value)) {
      return '手机号格式不正确';
    }
    return null;
  },
)

4. 扩展功能建议

  • 实时验证:在onChanged回调中验证
  • 发送验证码:结合后端API进行真实手机号验证
  • 错误提示:使用SnackBarDialog显示验证结果

注意事项

  • 不同国家/地区的手机号规则不同,需调整正则表达式
  • 严谨场景建议结合后端验证
  • 可考虑使用libphonenumber插件进行更精确的国际号码验证

这是最常用的手机号验证方案,可根据具体需求调整正则表达式规则。

回到顶部