
一句话承诺:复制即用的正则清单+流程图,帮你把技术文章里的奇怪空格、中文标点、错位代码块一次性清理干净。
flowchart TD
A[开始:文章原始文本] --> B{检测脏字符}
B -->|全角空格/混合标点| C[统一为半角]
B -->|重复空行/断行| D[压缩至单空行]
B -->|代码块错位| E[修复围栏```]
B -->|标题层级错乱| F[标准化#层级]
C --> G[批量正则替换]
D --> G
E --> G
F --> G
G --> H[人工快速扫描]
H --> I{是否仍有异常}
I -->|是| B
I -->|否| J[发布]类型 | 典型症状 | 正则/动作 | 备注 |
|---|---|---|---|
全角空格 | 段落中出现“ ” | 替换为半角空格 | 影响断句与对齐 |
中文标点混用 | “,”、“。”与英文逗号句号混排 | 统一为中文或英文 | 根据平台风格选择 |
重复空行 | 三行以上连续空行 | 压缩为一行 | 提升阅读紧凑度 |
代码围栏 | 缺少```或语言标注 | 补全并标注语言 | 代码高亮更稳定 |
标题层级 | 多个H1或跳级 | 统一成H2-H3 | 有利推荐系统识别 |
提示:多数IDE支持正则搜索替换(VS Code、JetBrains、Sublime等)。先全局替换,再人工扫一遍。
# 1) 全角空格 → 半角
\u3000+ -> " "
# 2) 连续空行压缩为单空行
(^\s*\n){2,} -> "\n\n"
# 3) 中文逗号统一为英文逗号(示例,根据需要定向)
, -> ,
# 4) 中文句号统一为英文句号(示例)
。 -> .
# 5) 去除行尾多余空格
[ \t]+$ -> ""
# 6) 统一代码围栏为三反引号
^``\s*$ -> "```"
# 7) 标题多余空格压缩
^(#+)\s{2,} -> "$1 "
# 8) 把Tab统一为2空格(示例)
\t -> " "
# 9) Markdown表格对齐:去除行首行末空格
^\s+|\s+$ -> ""
# 10) 统一链接格式中的中文冒号
: -> :
# 11) 去除不可见控制字符
[\u0000-\u001F\u007F] -> ""
# 12) 统一引号为英文双引号(按需)
[“”] -> "
# 13) 统一单引号为英文单引号(按需)
[‘’] -> '
# 14) 把中文括号统一为英文括号(按需)
[(] -> (
[)] -> )
# 15) 压缩连续的多个空格为一个
{2,} -> " "
# 16) 移除尾随的多余标点(示例)
[,.;:,。;:]+$ -> ""
# 17) 修复错位的列表项(去除多余前导空格)
^\s{3,}(-|\*)\s -> "- "
# 18) 统一行尾Windows换行为\n
\r\n -> \n
# 19) 替换中文引号包裹的代码为反引号
“([^”]+)” -> ` $1 `
# 20) 清理多余的标题井号尾随空格
^(#+)\s*(.*?)\s*$ -> "$1 $2"
const fs = require('fs');
function cleanse(text) {
return text
.replace(/\u3000+/g, ' ')
.replace(/(^\s*\n){2,}/gm, '\n\n')
.replace(/,/g, ',')
.replace(/。/g, '.')
.replace(/[ \t]+$/gm, '')
.replace(/^``\s*$/gm, '```')
.replace(/^(#+)\s{2,}/gm, (m, p1) => `${p1} `)
.replace(/\t/g, ' ')
.replace(/[\u0000-\u001F\u007F]/g, '')
.replace(/[“”]/g, '"')
.replace(/[‘’]/g, "'")
.replace(/[(]/g, '(')
.replace(/[)]/g, ')')
.replace(/ {2,}/g, ' ')
.replace(/[,.;:,。;:]+$/gm, '')
.replace(/^\s{3,}(-|\*)\s/gm, '- ')
.replace(/\r\n/g, '\n')
.replace(/“([^”]+)”/g, '`$1`')
.replace(/^(#+)\s*(.*?)\s*$/gm, (m, h, t) => `${h} ${t}`);
}
const input = fs.readFileSync('input.md', 'utf8');
fs.writeFileSync('output.md', cleanse(input));js、bash、```mermaid)。如果你的文章排版已经显著改善,下一篇我们将处理“Git 一键自救:误删分支/错提交到 main 的快速恢复流程(图解)”,附时序图和命令清单,保证能在最短时间把坑填上。