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
相关产品推荐
相关产品推荐

