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

JavaScript使用多字符多分隔符拆分字符串的实现问题

JavaScript使用多字符多分隔符拆分字符串的实现问题

嘿,我来帮你搞定这个问题!你之前尝试的hours.split(' - | / ')之所以没用,是因为当你传入字符串作为split的参数时,它会按字面量完全匹配,而不是把它当成正则表达式来解析——也就是说它在找' - | / '这个完全一致的字符串,显然你的原字符串里并没有这个,所以拆分失败啦。

要实现用多个多字符分隔符拆分,你需要给split传入一个正则表达式,用来匹配所有你想作为分隔符的模式。针对你的需求,我们可以写一个能匹配" - "或者" / "的正则,甚至更灵活一点,匹配被任意空格包围的-或/,这样就算分隔符两边空格数量不一样也能处理。

直接上一行解决的代码:

const hours = '13:00 - 17:00 / 20:00 - 02:00';
const result = hours.split(/\s*[-/]\s*/);
// 输出:['13:00', '17:00', '20:00', '02:00']

来解释一下这个正则的含义:

  • \s*:匹配0个或多个空白字符(这里就是处理分隔符两边的空格)
  • [-/]:匹配-或者/中的任意一个(把它们放在方括号里表示字符集合)
  • 整个正则的意思就是:匹配被任意数量空格包围的-或/,这样拆分的时候就会把这些分隔符全部去掉,直接得到你想要的干净时间数组。

如果你想更精确地只匹配原字符串里的" - "和" / "这两种分隔符,也可以用这个正则:

hours.split(/(?: - | \/ )/)

这里(?:...)是一个非捕获组,用来把两个分隔符模式组合在一起,\/是转义后的/(因为正则用/作为分隔符,所以内部的/需要转义)。

这样就完全符合你“一行代码搞定”的需求啦,不用多次替换~

备注:内容来源于stack exchange,提问作者Corinne Pradier

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 11:20:31