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

为何使用RegEx/(?<=]),(?=(L|M|J|V))/gi与JS split()得异常结果?

问题原因与解决方案

你的问题出在正则表达式里的捕获组上。当JavaScript的split()方法使用包含捕获组的正则时,会把捕获组匹配到的内容也插入到结果数组中,这就是输出里多了'M'、'J'这些字符的原因。

原正则里的(l|m|j|v)是捕获组,每次匹配到符合条件的字母时,都会把这个字母加入到split结果里。

解决方法

把捕获组改成非捕获组,用(?:...)替代(...),这样分组仅用于逻辑判断,不会把匹配的内容加入结果数组。

修改后的代码:

const pattern = /(?<=]),(?=(?:l|m|j|v))/gi;
const myString = "Lunes[9:00-13:00,14:00-16:00],Martes[19:00-3:00],Miercoles[19:00-21:00,0:00-3:30],Jueves[6:00-8:00,8:30-10:30,16:00-20:05]";
const myArray = myString.split(pattern);
console.log(myArray);

输出结果

[
  'Lunes[9:00-13:00,14:00-16:00]',
  'Martes[19:00-3:00]',
  'Miercoles[19:00-21:00,0:00-3:30]',
  'Jueves[6:00-8:00,8:30-10:30,16:00-20:05]' 
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:07:18