Agent Skills
返回列表
电话号码格式化校验

电话号码格式化校验

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f1b049da/hxb20267147 电话格式化校验技能到你的 AI 助手。

技能介绍

要解决的具体问题

手动校验手机号时,很多人会用简单的 ^1\d{10}$ 正则,但这种方案只能匹配国内 11 位号码,无法处理国际号码、带空格或区号的输入,也不能输出统一的存储格式。实际业务中,存库需要 E.164 这类无空格的标准格式,界面展示却要保留国内用户熟悉的分段样式,混用会导致数据重复或查询失败。另外,非法号码的报错往往模糊,用户不知道具体哪里填错了。

技能如何工作

该技能基于 libphonenumber-js 实现,核心能力包括:

  • 校验与格式化:输入号码时自动识别默认国家(CN,可配置),合法号码返回 e164(存储用)和 national(展示用)两种格式,非法号码给出中文原因(如"位数不足""区号无效")。
  • 推荐实现步骤:失焦或提交时调用 formatPhone 函数;校验成功后写入 mobileE164 字段作为唯一标识,界面展示 national 格式;自测用例覆盖 13800138000、+86 138 0013 8000 和非法短号,确保边界情况正确。

适用边界与注意点

  • 格式合法≠真实有效:校验通过仅代表格式符合规则,不保证号码已实名或可接通。
  • 禁止外传号码:默认本地校验,不要将号码发送到不明外网服务。
  • 避免能力冒充:不要用简单正则伪装成完整校验能力,需明确说明依赖 libphonenumber-js 的局限性。

使用场景

  • 录入客户手机号到 CRM 时,需要校验号码合法性,并把带空格的输入统一成无空格格式再入库
  • 导出通讯录前要把手机号批量转换为 E.164,保证下游系统和短信服务能正确识别
  • 国际用户填写号码时,要按默认国家解析区号,并给出合法或非法的中文提示
  • 用户在表单里输错短号或漏位时,需要在失焦时给出具体中文原因并阻止提交

适合人员

  • 后端工程师:需要在入库前统一手机号格式,避免脏数据污染唯一键
  • 前端工程师:要在表单失焦时给出准确的中文校验提示,并区分展示字段与存储字段
  • 数据工程师:在导出通讯录或对接短信服务前,需要把号码转成 E.164
  • 测试工程师:需要一组覆盖国内号码、带空格号码与非法短号的自测用例