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

如何使用JavaScript将(000) 000-0000格式手机号转换为国际号码格式

问题原因

你提供的代码无法正常运行,是因为String.replaceAll()方法传入第一个参数为字符串时,只会精确匹配替换对应文本,不会将'\\D+'解析为正则规则,因此无法过滤掉手机号里的括号、空格、横杠等非数字字符。

正确实现方案

方案1:修正replaceAll的正则参数

将匹配规则改为带全局标记g的正则表达式即可正常匹配所有非数字字符:

const phoneNumber = '(000) 000-0000';
const convertedPhoNum = phoneNumber.replaceAll(/\D/g, '');
const intPhoneNumber = '+1' + convertedPhoNum;
console.log(intPhoneNumber); // 输出结果:+10000000000

方案2:使用replace方法(兼容性更好)

String.replace()本身支持全局正则匹配,对旧版JS环境的兼容性比replaceAll更优:

const phoneNumber = '(000) 000-0000';
const convertedPhoNum = phoneNumber.replace(/\D/g, '');
const intPhoneNumber = `+1${convertedPhoNum}`;
console.log(intPhoneNumber); // 输出结果:+10000000000

异常校验补充

如果需要兼容异常输入场景,可以增加有效数字长度校验,避免生成错误格式的国际号码:

const phoneNumber = '(000) 000-0000';
const convertedPhoNum = phoneNumber.replace(/\D/g, '');
if (convertedPhoNum.length === 10) {
  const intPhoneNumber = `+1${convertedPhoNum}`;
  console.log(intPhoneNumber);
} else {
  console.error('输入手机号格式异常,提取到的有效数字长度不符合北美手机号规则');
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:45:01