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

JavaScript将字符串转数组时如何保留[]内容及\转义字符不拆分

实现方案

核心逻辑通过正则优先级匹配实现,无需额外遍历判断:

function splitSpecialStr(str) {
  // 匹配优先级:方括号包裹内容 > 反斜杠开头转义字符 > 单个普通字符
  return str.match(/\[[^\]]*\]|\\.|./gs) ?? [];
}

正则说明

  • \[[^\]]*\]:优先匹配完整的方括号包裹内容,非贪婪匹配避免截断多个相邻方括号场景
  • \\.:次优先级匹配反斜杠开头的任意转义字符,覆盖转义换行、转义特殊符号等场景
  • .:匹配单个普通字符,gs修饰符支持全局匹配、.可识别换行符等空白字符

测试验证

测试用例1(示例输入)

const input1 = "d-M-[Year] g:i:s a e";
console.log(splitSpecialStr(input1));
// 输出:['d', '-', 'M', '-', '[Year]', ' ', 'g', ':', 'i', ':', 's', ' ', 'a', ' ', 'e']

测试用例2(带转义字符)

const input2 = "a\\nb\\[test]c";
console.log(splitSpecialStr(input2));
// 输出:['a', '\\n', 'b', '\\[', 't', 'e', 's', 't', ']', 'c']

测试用例3(带换行+自定义标签)

const input3 = "line1\n[UserTag]\\tend";
console.log(splitSpecialStr(input3));
// 输出:['l','i','n','e','1','\n','[UserTag]','\\t','e','n','d']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:09:02