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

正则表达式实现字符串连字符添加及异常格式处理

解决方案

核心思路

先统一清理输入(移除所有非字母数字字符,从根源避免重复连字符问题),再按照固定分段规则添加连字符。

实现代码

function formatCode(input) {
  // 清理输入:移除所有非字母数字字符,同时统一转为大写(可选,按需调整)
  const cleanedInput = input.replace(/[^A-Z0-9]/gi, '').toUpperCase();
  
  // 仅当清理后长度为7位时,执行格式化
  if (cleanedInput.length !== 7) {
    return cleanedInput; // 若长度不符,返回清理后的原始值,也可按需抛出提示或错误
  }
  
  // 按规则拆分并添加连字符:前2位 + 中间3位 + 最后2位
  return cleanedInput.replace(/^(.{2})(.{3})(.{2})$/, '$1-$2-$3');
}

// 测试验证
console.log(formatCode('FN322KN'));       // 输出: "FN-322-KN"
console.log(formatCode('FN-322KN'));      // 输出: "FN-322-KN"
console.log(formatCode('F-N322-KN'));     // 输出: "FN-322-KN"
console.log(formatCode('fn322kn'));       // 输出: "FN-322-KN"
console.log(formatCode('FN322'));         // 输出: "FN322"(长度不符时返回清理后的值)

代码说明

  1. 输入清理:使用正则/[^A-Z0-9]/gi匹配所有非字母数字的字符(包括已存在的连字符),替换为空后统一转为大写,确保后续处理的是标准化的纯字符字符串,彻底解决重复连字符问题。
  2. 长度校验:添加长度判断,仅当清理后的字符串长度为7位时才执行格式化,避免对不符合规则的输入错误处理。
  3. 分段格式化:正则^(.{2})(.{3})(.{2})$精准匹配7位字符串,将其拆分为前2位、中间3位、最后2位三组,通过$1-$2-$3拼接成目标格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:25:52