正则表达式删除字符本质是替换为空字符串,需正确编写匹配模式并注意转义;删单个字符如.或\_,删多个用[.\_-],删某类用\d\s\p{P}等,按位置删需^$或环视断言。

正则表达式删除特定字符,核心在于用 替换为空字符串 的方式实现“删除”效果,而不是真正从字符串中物理移除。关键是要写对匹配模式,避免误删或漏删。
匹配单个指定字符
最简单的情况:只删掉某一个固定字符,比如所有英文句点 . 或下划线 _。
- 注意转义:像
.、*、+、?、^、$、\、|、(、)、[、]、{、}这些在正则中有特殊含义的字符,如果想匹配字面意义,必须加反斜杠\。例如删掉所有句点,应写\.,而不是.(后者会匹配任意字符)。 - 示例(JavaScript):
"a.b_c".replace(/\./g, "")→"ab_c";删下划线:"a_b.c".replace(/_/g, "")→"ab.c"。
匹配多个不同字符中的任意一个
用字符组 [...] 一次性匹配并删除多个可选字符。
- 写法:把要删的字符放进方括号内,如
[._-]表示匹配一个点、下划线或短横线。 - 注意:方括号内大多数元字符失去特殊含义(
^在开头表示“非”,-在中间表示范围,]和\需转义),所以[._-]不需要转义点和短横线(但放在开头或结尾更安全可写成[\.\_-])。 - 示例:
"file-name.txt".replace(/[._-]/g, "")→"filenametxt"。
删除某类字符(如所有数字、空格、标点)
利用预定义字符类或 Unicode 属性,批量处理一类字符。
- 常用预定义类:
\d(数字)、\s(空白符,含空格、制表、换行)、\w(字母数字下划线),对应大写形式表示“非”,如\D匹配非数字。 - 删所有空格:
str.replace(/\s/g, "");删所有数字:str.replace(/\d/g, "")。 - 更精确控制可用 Unicode 属性(现代 JS/Python/Java 支持):
\p{P}匹配任意标点符号,需加u标志,如str.replace(/\p{P}/gu, "")。
按位置或上下文精准删除(进阶)
仅删开头、结尾、或前后有特定内容的字符,需用锚点或环视断言。
- 删开头的
#:str.replace(/^#/,"")(不加g,只替换首个)。 - 删结尾的
!:str.replace(/!$/,"")。 - 只删被字母包围的下划线(即不是开头/结尾的):
str.replace(/(?,这里(? 是正向先行断言,(?=...)是正向后行断言,确保下划线前后都是字母才删。
正则删字符不复杂但容易忽略转义和边界,动手前先用在线工具(如 regex101)测试匹配结果,确认只命中目标再执行替换。










