JavaScript如何用正则按+分割字符串且不匹配SPK段内的L+R
JavaScript 分割实现方案
直接使用带断言的正则作为split方法的参数即可:
const rawStr = '23DGERA@SPK_20W L+R FA-2@1+342HSHC@CPU_8PIN INTEL_TEST!@1+2356GHMX@SSD_256G MICRON_CONTENT@2 + blablabla' // 核心正则:排除夹在L和R中间的+号,同时自动过滤+号前后的空格 const splitResult = rawStr.split(/(?<!L)\s*\+\s*(?!R)/) console.log(splitResult)
输出结果:
[ '23DGERA@SPK_20W L+R FA-2@1', '342HSHC@CPU_8PIN INTEL_TEST!@1', '2356GHMX@SSD_256G MICRON_CONTENT@2', 'blablabla' ]
正则逻辑说明
(?<!L):负向回顾断言,确保匹配的+前面不是大写字母L\s*:匹配0个或多个空白字符,自动处理+前后可能存在的空格\+:匹配+本身(?!R):负向前瞻断言,确保匹配的+后面不是大写字母R
兼容性说明
该语法使用了ES2018引入的负向回顾断言,所有现代浏览器(Chrome 62+、Firefox 78+、Safari 11.1+)以及Node.js 10+版本均原生支持,无需额外兼容处理。
内容的提问来源于stack exchange,提问作者somniloquist_
相关产品推荐
相关产品推荐

