标题解释了我的问题。我不明白为什么在字符串上使用RegEx /(?<=]),(L|M|J|V)/gi
和JS split()
方法会得到意外的结果。
使用所述RegEx导致:
[
'Lunes[9:00-13:00,14:00-16:00]',
'M',
'Martes[19:00-3:00]',
'M',
'Miercoles[19:00-21:00,0:00-3:30]',
'J',
'Jueves[6:00-8:00,8:30-10:30,16:00-20:05]'
]
而不是:
[
'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 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);
2条答案
按热度按时间cvxl0en21#
这是由于lookahead中的捕获组,您可以忽略它,并使用字符类代替交替
[lmjv]
v64noz0r2#
您的确切问题可能是lookbehinds不受支持。我建议使用regex find all方法:
正则表达式字符类
\b[LMJVSD][a-z]+
涵盖了从Lunes到Domingo(星期一到星期日)。