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

如何使用正则表达式替换多模式,保留手机号+号同时移除空格

手机号格式处理调整方案

你当前代码的核心问题是正则表达式写错了:匹配非数字字符的元字符应为\D,你现有代码里写的是普通大写字母D,仅能匹配字符D,自然无法识别并删除空格。

修正后的代码如下:

String flattenPhoneNumber(String phoneStr) {
    return phoneStr.replaceAllMapped(RegExp(r'^(\+)|\D'), (Match m) {
      return m[0] == "+" ? "+" : "";
    });
}

代码说明

  • 正则r'^(\+)|\D'分为两部分:
    • ^(\+)匹配字符串开头的+号,命中后会保留该字符
    • \D匹配所有非数字字符,包含空格、括号、横杠等其他非法字符,命中后全部替换为空
  • 输入示例+41 000 0000 000处理后输出为+410000000000,完全符合需求。

如果想要更易读的写法,也可以用以下实现:

String flattenPhoneNumber(String phoneStr) {
  if (phoneStr.startsWith('+')) {
    return '+' + phoneStr.substring(1).replaceAll(RegExp(r'\D'), '');
  }
  return phoneStr.replaceAll(RegExp(r'\D'), '');
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:51:03