0

0

如何使用正则表达式精准删除字符串_正则匹配并删除字符串子串方法

星降

星降

发布时间:2026-01-12 14:21:26

|

465人浏览过

|

来源于php中文网

原创

正则表达式提供五种精确删除子串的方法:一、replace()配字面量;二、replace()配RegExp构造函数;三、split()与join()组合;四、match()配filter()白名单保留;五、exec()循环截取非匹配段。

如何使用正则表达式精准删除字符串_正则匹配并删除字符串子串方法

如果您需要从一段文本中精确移除符合特定模式的子串,正则表达式提供了高效且灵活的匹配与替换能力。以下是实现该目标的多种方法:

一、使用 replace() 方法配合正则表达式字面量

该方法通过字符串原生的 replace() 函数,传入正则表达式字面量与空字符串作为替换值,实现一次性匹配并删除所有符合模式的子串。

1、定义待处理字符串,例如 const str = "订单号:ORD-12345,状态:已完成,时间:2023-05-20";

2、编写正则表达式字面量,如 /ORD-\d+/g,其中 g 标志确保全局匹配所有出现位置

3、调用 str.replace(/ORD-\d+/g, ""),返回结果为 "订单号:,状态:已完成,时间:2023-05-20";

4、若需删除多个不同模式,可链式调用 replace(),或使用分组交替模式,例如 /ORD-\d+|时间:\d{4}-\d{2}-\d{2}/g。

二、使用 replace() 方法配合 RegExp 构造函数

当正则表达式模式需动态生成(如含变量)时,RegExp 构造函数可避免字面量语法限制,并支持运行时拼接。

1、声明变量 pattern = "完成",flags = "g";

2、构造正则对象 const regex = new RegExp(pattern, flags);

3、执行替换操作 str.replace(regex, "");

4、注意:若 pattern 来自用户输入,必须对特殊字符进行转义,否则可能引发 SyntaxError 或意外匹配

三、使用 split() 与 join() 组合实现无替换逻辑的删除

该方法不依赖 replace,而是将字符串按正则分割为数组,再以空字符串连接各段,从而隐式“删除”匹配部分。

1、对字符串调用 str.split(/:[^,]+,/g),将匹配“:后跟非逗号字符直到逗号”的片段切开;

2、得到数组后使用 .join("") 合并所有元素;

3、此方式仅适用于匹配内容不包含捕获组且无需保留上下文结构的场景

ReRoom AI
ReRoom AI

专为室内设计打造的AI渲染工具,可以将模型图、平面图、草图、照片转换为高质量设计效果图。

下载

4、若正则匹配为空字符串,split 将导致无限数组,应避免使用 /^$/ 等空匹配模式。

四、使用 match() 配合 filter() 和 join() 实现白名单式保留

该方法反向操作:先提取所有**不匹配**目标模式的子串,再拼接,适用于需严格控制保留内容的场合。

1、使用 str.match(/[^,]+/g) 获取所有逗号分隔项;

2、对结果数组调用 .filter(item => !/状态:完成/.test(item)) 过滤掉含指定模式的项;

3、执行 .join(",") 得到剔除目标子串后的字符串;

4、注意:原始分隔符可能丢失,需在 filter 前用带捕获组的正则保留边界信息

五、使用正则 exec() 循环定位并截取非匹配段

该方法通过 exec() 的 lastIndex 属性逐次获取匹配位置,手动拼接匹配区间外的原始字符,实现精细控制。

1、初始化正则 const re = /【[^】]+】/g 和结果数组 parts = [];

2、设置起始索引 lastEnd = 0;

3、循环执行 const match = re.exec(str),每次将 str.slice(lastEnd, match.index) 推入 parts;

4、更新 lastEnd = re.lastIndex;

5、循环结束后追加末尾剩余部分 str.slice(lastEnd),最后 parts.join("") 即为删除结果;

6、此方式能准确保留原始空白与分隔符,适合格式敏感型文本处理

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

510

2023.06.20

正则表达式不包含
正则表达式不包含

正则表达式,又称规则表达式,,是一种文本模式,包括普通字符和特殊字符,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式的文本。php中文网给大家带来了有关正则表达式的相关教程以及文章,希望对大家能有所帮助。

247

2023.07.05

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

737

2023.07.05

java正则表达式匹配字符串
java正则表达式匹配字符串

在Java中,我们可以使用正则表达式来匹配字符串。本专题为大家带来java正则表达式匹配字符串的相关内容,帮助大家解决问题。

211

2023.08.11

正则表达式空格
正则表达式空格

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。本专题为大家提供正则表达式相关的文章、下载、课程内容,供大家免费下载体验。

349

2023.08.31

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

293

2023.11.13

正则表达式空格如何表示
正则表达式空格如何表示

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。想了解更多正则表达式空格怎么表示的内容,可以访问下面的文章。

232

2023.11.17

正则表达式中如何匹配数字
正则表达式中如何匹配数字

正则表达式中可以通过匹配单个数字、匹配多个数字、匹配固定长度的数字、匹配整数和小数、匹配负数和匹配科学计数法表示的数字的方法匹配数字。更多关于正则表达式的相关知识详情请看本专题下面的文章。php中文网欢迎大家前来学习。

528

2023.12.06

Java 项目构建与依赖管理(Maven / Gradle)
Java 项目构建与依赖管理(Maven / Gradle)

本专题系统讲解 Java 项目构建与依赖管理的完整体系,重点覆盖 Maven 与 Gradle 的核心概念、项目生命周期、依赖冲突解决、多模块项目管理、构建加速与版本发布规范。通过真实项目结构示例,帮助学习者掌握 从零搭建、维护到发布 Java 工程的标准化流程,提升在实际团队开发中的工程能力与协作效率。

9

2026.01.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
AngularJS教程
AngularJS教程

共24课时 | 2.5万人学习

【李炎恢】ThinkPHP8.x 后端框架课程
【李炎恢】ThinkPHP8.x 后端框架课程

共50课时 | 4.4万人学习

Swoft2.x速学之http api篇课程
Swoft2.x速学之http api篇课程

共16课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号