如何使用正则表达式在JavaScript中实现&、:字符后的字符串分割
JavaScript字符串按&和:后方分割的正则调整方案
你当前使用的(?=[:&]+)是前向肯定断言,匹配的是&/:字符前方的位置,所以拆分后符号会保留在后一段的开头,不符合从后方拆分的要求。
你只需要把前向断言替换为后向肯定断言即可,修改后的正则可根据需求二选一:
// 每个&/:后面都拆分 .split(/(?<=[:&])/g) // 连续多个&/:的整体后方才拆分 .split(/(?<=[:&]+)/g)
实现原理
(?<=匹配规则)是后向肯定断言,匹配的是「前方刚好符合匹配规则」的位置,放在这里就是匹配&/:(或连续多个&/:)紧挨着的后方位置,在这个位置拆分就会把符号保留在前一段的末尾,完全符合需求。
测试示例
针对你给出的示例字符串,运行效果如下:
const targetStr = 'Public Protection & Housing Authority: $100,000,000.' const splitResult = targetStr.split(/(?<=[:&])/g) console.log(splitResult) // 输出结果: // [ // 'Public Protection &', // ' Housing Authority:', // ' $100,000,000.' // ]
兼容性说明
后向断言是ES2018推出的特性,目前所有主流浏览器、Node.js 10.0及以上版本均已支持,可正常使用。
内容的提问来源于stack exchange,提问作者KateB
相关产品推荐
相关产品推荐

