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

JavaScript如何正则匹配拆分日期范围字符串中的两个日期

问题原因

你原有代码无法拿到第二个日期,核心原因有两个:

  • 正则没有添加全局匹配标识g,非全局模式下String.match()只会匹配到第一个符合规则的字符串,不会继续向后查找第二个日期
  • 正则中设置的三个括号捕获组,是用来拆分单个日期内的月、日、年片段的,所以匹配结果从索引1开始返回的是单个日期内部的分段值,也就是你拿到的01,和第二个日期没有关系
实现方法

你可以根据场景选下面任意一种方法,都能得到期望的输出结果:

方法1:正则全局匹配

给正则加上全局标识g,同时去掉不必要的内部分段捕获组,就能直接提取到所有符合格式的完整日期:

var date = "01-01-2000 - 01-01-2010";
var dateList = date.match(/\d{2}-\d{2}-\d{4}/g);

console.log(dateList[0]); // 01-01-2000
console.log(dateList[1]); // 01-01-2010

这个方法兼容性好,哪怕字符串里两个日期之间的空格数量不固定,也能正确提取。

方法2:固定分隔符拆分

如果你确定两个日期固定使用-作为分隔符,直接用字符串拆分的方法更简单,性能也更高:

var date = "01-01-2000 - 01-01-2010";
var dateList = date.split(' - ');

console.log(dateList[0]); // 01-01-2000
console.log(dateList[1]); // 01-01-2010

如果分隔符前后可能存在数量不定的空格,可以用正则做拆分规则适配:

var dateList = date.split(/\s*-\s*/);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:36:21