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

如何用正则表达式匹配字符串最右侧的指定格式日期?

解决方案:匹配字符串中最右侧的合法日期

要提取目标字符串中最右侧的符合指定格式的日期,你可以通过以下几种方式实现:

方法1:利用贪婪匹配捕获最后一个日期

使用正则表达式的贪婪特性,先匹配所有内容直到最后一个合法日期,再捕获该日期:

.*(\d{1,2}/\d{1,2}/\d{2,4}|\d{4}-\d{2}-\d{2})
  • .* 会贪婪匹配所有字符,直到遇到最后一个合法日期
  • 捕获组 () 会提取出最右侧的日期(示例中为 2024-10-01)

方法2:使用负向预查确保无后续日期

通过负向预查验证当前匹配的日期之后没有其他合法日期,直接定位最右侧目标:

(\d{1,2}/\d{1,2}/\d{2,4}|\d{4}-\d{2}-\d{2})(?!.*(\d{1,2}/\d{1,2}/\d{2,4}|\d{4}-\d{2}-\d{2}))
  • (?!...) 是负向预查,确保当前日期之后不存在其他合法日期
  • 此正则会直接匹配符合要求的最右侧日期

方法3:提取所有匹配项后取最后一个

如果使用支持全局匹配的编程语言(如JavaScript、Python),可以先提取所有合法日期,再取数组最后一项:

JavaScript示例:

const str = "1/1/2024; 02/01/2024; 2024-10-01";
const regex = /(\d{1,2}\/\d{1,2}\/\d{2,4}|\d{4}-\d{2}-\d{2})/g;
const matches = [...str.matchAll(regex)];
const lastDate = matches[matches.length - 1][0]; // 输出:"2024-10-01"

为什么你的负向回溯表达式失败?

你使用的负向回溯((?!...))是检查当前位置之前的内容,而我们需要的是确保当前日期之后没有其他日期,因此应该使用负向预查而非回溯,方向完全相反。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:02:48