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

使用Regex处理手机号码 替换开头0/00并清理非数字字符问题

手机号格式化实现方案

两种实现方式都可以满足需求,可根据团队习惯和后续规则迭代预期选择:

方案1:纯正则实现

通过正则捕获组区分开头的00和单0场景,直接替换前缀,再清理非合规字符:

let phones = ['321-1234567','+355 321 1234567','0103 1234500', '00 355 3211234567' ]
phones.forEach(phone => {
  phone = phone.replace(/^(00|0)/, match => match === '00' ? '+' : '+355')
               .replace(/[^+\d]/g, '')
  console.log(phone)
})

方案2:startsWith条件判断实现

逻辑更直观,后续调整前缀规则时修改成本更低:

let phones = ['321-1234567','+355 321 1234567','0103 1234500', '00 355 3211234567' ]
phones.forEach(phone => {
  // 先移除所有非数字、非+的分隔字符
  let cleanPhone = phone.replace(/[^+\d]/g, '')
  // 按前缀规则处理
  if (cleanPhone.startsWith('00')) {
    cleanPhone = '+' + cleanPhone.slice(2)
  } else if (cleanPhone.startsWith('0')) {
    cleanPhone = '+355' + cleanPhone.slice(1)
  }
  console.log(cleanPhone)
})

方案对比

  • 正则方案:代码更简洁,适合规则固定、不需要频繁调整的场景
  • 条件判断方案:可读性更高,后续如果需要新增其他前缀处理规则,修改难度更低,更适合业务复杂的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:15:03