应先将文件编码转为utf-8再用[\u4e00-\u9fff]删汉字,否则因编码不匹配会导致匹配失败或错位;[^\x00-\x7f]则兼容性强但范围更广。

直接删所有中文字符,用 [^\x00-\x7F] 最稳;想只删汉字(不含中文标点、全角空格),改用 [\u4e00-\u9fff],但必须先确保文件是 UTF-8 编码。
为什么不能直接搜 [\u4e00-\u9fff] 就替换?
Notepad++ 的正则引擎对 Unicode 范围的支持依赖编码。如果文件当前是 ANSI 或 GBK 编码(右下角显示不是 UTF-8),[\u4e00-\u9fff] 会匹配失败或错位——它不是“不认识汉字”,而是把多字节的中文当成了乱码字节流来解析。
- 先点菜单栏「编码 → 转为 UTF-8」,保存后再操作
- 不建议用「以 UTF-8 格式编码」,那只是改头不改内容,乱码仍存在
- 若转完发现文字变方块,说明原文件其实是 GBK,应先「以 GBK 格式编码」再转 UTF-8
[^\x00-\x7F] 和 [\u4e00-\u9fff] 到底该选哪个?
看你要删什么:
-
[^\x00-\x7F]:删所有非 ASCII 字符,包括汉字、emoji、日文假名、全角标点(,。!)、欧元符号 €、数学符号 ∑ 等。兼容性最强,旧版 Notepad++ 也稳 -
[\u4e00-\u9fff]:只删 CJK 基本汉字区(简体/繁体/日韩常用字),不碰中文逗号、引号、全角空格\u3000、平假名等。更精准,但需 UTF-8 + 正确勾选
注意:[\u4e00-\u9fff] 不含生僻字(如扩展 A 区的「㐂」),也不含中文破折号(——)、省略号(…)等,这些得额外加范围,比如 [\u4e00-\u9fff\u3000-\u303f\u3099-\u309c](仅 Notepad++ 8.6+ 支持)。
替换时最容易踩的三个坑
哪怕正则写对了,操作不对也会白忙活:
- 忘记勾选「匹配正则表达式」——默认是普通搜索,
[^\x00-\x7F]会被当字面字符串找 - 误勾「. 匹配换行符」——会导致跨行匹配,尤其在多行字符串里可能吞掉整段逻辑
- 没预览就点「全部替换」——先按
Ctrl+F输入同样正则,点「查找全部」,右侧结果窗格里确认是否真匹配到你想要删的内容
特别提醒:删完别急着关,右下角看换行符类型(DOS / UNIX / MAC)。如果原来混用,删中文后可能暴露出换行不一致问题,导致 Git 提交异常或脚本读取错行。
真正难的不是写对正则,而是判断“哪些中文该留”。比如 JSON 中的 key 名是英文但 value 含中文,你删 value 里的中文没问题;但如果 key 是 "用户ID",删完就变成 "ID",结构就崩了——这类场景必须加锚点限定,比如 ":\s*".*[\u4e00-\u9fff].*",而不是无差别扫。











