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

如何使用正则表达式移除已知起止模式、中间内容动态的子串

正则匹配移除时间前缀解决方案

原正则错误说明

你之前的写法存在三个核心问题:

  1. ^ 和 $ 匹配的是整个字符串的起止位置,若目标子串不是单独占据整行/整个字符串,会直接匹配失败
  2. On* 实际匹配规则是字母O后接任意数量的字母n,而非你预期的On开头后接任意内容
  3. 没有覆盖中间空格、月份、日期、时间等动态内容的匹配规则

正确正则写法

符合需求的通用正则表达式如下:
/On\s+[A-Z][a-z]{2}\s+\d{1,2},\s+\d{4}\s+\d{1,2}:\d{2}\s+[AP]M,/g
各部分匹配规则:

  • On:匹配目标子串固定开头
  • \s+:匹配1个及以上空格,兼容多空格的异常格式
  • [A-Z][a-z]{2}:匹配Jan、Feb等3个字符的月份缩写
  • \d{1,2}:匹配1-2位的日期数字
  • \d{4}:匹配4位的年份数字
  • \d{1,2}:\d{2}:匹配小时:分钟格式的时间
  • [AP]M:匹配AM/PM标识
  • 末尾的,匹配子串结尾的逗号
  • 修饰符g表示全局匹配,替换所有符合规则的子串

如果目标子串全部出现在每行开头,可以增加m多行修饰符,写法调整为:
/^On\s+[A-Z][a-z]{2}\s+\d{1,2},\s+\d{4}\s+\d{1,2}:\d{2}\s+[AP]M,/gm


使用示例

const rawStr = "On Feb 4, 2018 11:00 PM,正文第一段On Mar 15, 2019 8:20 AM,正文第二段";
const cleanedStr = rawStr.replaceAll(/On\s+[A-Z][a-z]{2}\s+\d{1,2},\s+\d{4}\s+\d{1,2}:\d{2}\s+[AP]M,/g, '');
// 输出结果:正文第一段正文第二段

偷懒截取实现(仅适用于子串固定在开头、长度固定场景)

如果确认所有目标子串长度固定,比如示例子串长度为22位,可直接截取:

const cleanedStr = rawStr.slice(22);

内容的提问来源于stack exchange,提问作者Jacob David C. Cunningham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:24:06