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

如何用JavaScript正则replace保留匹配日期、删除其余所有非匹配内容

解决方案

你原有的写法是将正则匹配到的目标日期内容替换为空,自然会删掉你想要保留的内容,调整逻辑有两种常用实现方式:

方法1:直接用match()提取匹配项(最简便)

你已经有能正确匹配目标日期的正则了,不需要硬靠replace反向删除,直接调用字符串的match()方法就能拿到所有符合规则的日期:

// 示例待处理字符串
const rawStr = `SURVEY API RESULT LANDING: [{"_id":"616392e41a03eed562de2e8a",
"userId":"email@gmail.com",
"date":"11 10 2021",
"timeStamp":"2:26:",
"formResponse":"Survey completed"}]
    
[{"_id":"616392e41a03eed562de2e8a",
"userId":"email@gmail.com",
"date":"9 10 2021",
"timeStamp":"2:26:",
"formResponse":"Survey completed"}]`;

const dateRegex = /\d{1,2} \d{2} \d{4}/g;
// 拿到所有匹配的日期数组
const dateList = rawStr.match(dateRegex);
// 输出结果:['11 10 2021', '9 10 2021']

如果需要把结果拼接成字符串,直接调用join()方法即可,比如dateList.join('\n')就能得到换行分隔的日期文本。

方法2:用replace()实现保留匹配项

如果一定要用replace实现需求,可以通过捕获组保留目标内容,其余内容全部替换为空:

const result = rawStr.replace(/.*?(\d{1,2} \d{2} \d{4})|.*/g, '$1\n').trim();

原理是正则会优先捕获到目标日期,替换时只保留捕获组$1的内容,其余所有未匹配到目标的内容都会被清空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:06:05