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

正则表达式需求:仅当前置带连字符日期匹配时匹配*+数字模式

正则表达式匹配需求

我需要编写正则表达式,匹配以连字符开头的日期格式模式,以及可能跟在其后的* + digit模式。

输入文本示例:

- 19/03/2081
- 20 / 02 / 1982
- 11/3/1950 * 1
- 21 / 11 / 2120 * 500000
01 / 09 / 2021
- 21 / 09 / 2021
20 / 09 / 2021 * 3
***12

我当前使用的正则表达式为:\-(\s*\d+\s*\/\s*\d+\s*\/\s*\d+)|\s*\*\s*\d+,它能正确匹配以下内容:

- 19/03/2081
- 20 / 02 / 1982
- 11/3/1950 * 1
- 21 / 11 / 2120 * 500000
- 21 / 09 / 2021

但该表达式还会错误匹配* 3和*12。我希望仅当前置的带连字符日期模式匹配时,才匹配* + digit模式,请问这可以通过正则表达式实现吗?


当然可以实现,核心是把* + digit部分设为日期模式的可选后缀,而非独立分支。你之前用|分支导致孤立的* + 数字被误匹配,调整结构后就能解决问题。

推荐正则表达式:

^\-\s*\d+\s*\/\s*\d+\s*\/\s*\d+(?:\s*\*\s*\d+)?$

表达式细节解释:

  • ^:匹配行起始位置,确保整行以连字符开头
  • \-\s*:匹配开头的连字符,允许后面跟任意空白字符
  • \d+\s*\/\s*\d+\s*\/\s*\d+:匹配日期部分,支持数字前后的任意空白,兼容19/03/2081或20 / 02 / 1982这类格式
  • (?:\s*\*\s*\d+)?:非捕获组,作为可选后缀匹配* + 数字组合,?表示这部分可存在也可不存在
  • $:匹配行结束位置,确保整行都符合规则

启用多行模式(如正则引擎的MULTILINE flag)后,这个表达式会精准匹配所有符合要求的行,不会误抓孤立的* 3或*12。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:32:20