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

美国电话号码自动格式化问题:输入前缀1时+1重复显示

问题分析

你的代码核心问题是无条件在开头添加+1 ,同时直接使用用户输入的全部数字(包括开头的1)拼接后续内容,导致输入以1开头时,出现+1 1XXX...的重复问题。

解决方案

修改逻辑:先判断输入数字是否以1开头,若存在则剔除这个开头的1(因为我们已经手动添加了国家码+1),再按格式拼接内容。

修改后的代码:

function numberReg(event) {
  let input = event.target.value.replace(/[^0-9]/g, "");
  
  // 剔除开头的1,避免和手动添加的+1重复
  if (input.startsWith('1')) {
    input = input.slice(1);
  }
  
  let NumValue = "";

  if (input.length >= 1) {
    NumValue += "+1 ";
    if (input.length >= 3) {
      NumValue += "(" + input.substring(0, 3) + ") ";
      if (input.length >= 6) {
        NumValue += input.substring(3, 6) + " -" + input.substring(6, 10);
      } else {
        NumValue += input.substring(3, 6);
      }
    } else {
      NumValue += input.substring(0, 3);
    }
  }
  event.target.value = NumValue;
}
关键调整说明
  • 新增input.startsWith('1')判断,自动剔除用户输入的开头1,避免与手动添加的+1重复;
  • 调整长度判断阈值:原代码的>=4/>=7是基于包含国家码1的输入,现在输入已去掉开头1,因此改为>=3/>=6,对应美国号码的3位区号、3位中心局代码的格式逻辑。

测试效果示例:

  • 输入14567853424 → 输出+1 (456) 785 -3424
  • 输入4567853424 → 输出+1 (456) 785 -3424
  • 输入1456 → 输出+1 (456)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:18:34