vscode全局替换邮箱用/[a-za-z0-9.\_%+-]+@[a-za-z0-9.-]+\.[a-za-z]{2,}/g,手机号用/1[3-9]\d(?:[\s\-—-()\u3000]*\d){9}/g,需启用正则模式并注意编码与边界匹配。

VSCode全局替换怎么写正则匹配邮箱
VSCode 的「查找」面板(Ctrl+Shift+H)支持 JavaScript 风格正则,但不支持 \b 或 Unicode 类别如 \p{L}。匹配邮箱必须用保守、可落地的模式,否则容易漏掉或误伤。
推荐用这个表达式(开启「正则模式」和「全字匹配」可选,但不强制):
/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g
- 它覆盖常见邮箱格式(如
user.name+tag@domain.co.uk),但跳过纯数字本地部分(如123@abc.com是合法的,也匹配) - 不匹配末尾带标点的邮箱(如
me@example.com.),避免误吞句号;若需兼容,可在结尾加[^\w\s]? - 注意:VSCode 不支持
(?i)忽略大小写标志,如需不区分大小写,请勾选查找面板里的「匹配大小写」按钮取消勾选
VSCode全局替换怎么写正则匹配手机号(国内)
国内手机号以 1 开头、11 位纯数字,但实际文本中常混有空格、短横、括号甚至中文符号(如「-」、「—」、「-」)。直接用 1\d{10} 会漏掉这些干扰。
更稳妥的写法是先清理干扰再匹配,但 VSCode 不支持预处理;所以改用「宽松捕获 + 精确断言」:
/1[3-9]\d(?:[\s\-—-()\u3000]*\d){9}/g
-
1[3-9]\d锁定号段开头(排除 10/11/12 等无效号段) -
(?:[\s\-—-()\u3000]*\d){9}允许每后续一位前有零到多个分隔符(含全角空格\u3000和中文破折号) - 缺点:可能匹配到
138-1234-56789这种 12 位伪号(因最后两位被当成分离的\d);建议替换前手动检查上下文 - 若只要严格 11 位无任何分隔,用
1[3-9]\d{9}更安全
全局替换时怎么避免误替换“邮箱”或“手机号”文字本身
很多人一搜 邮箱 或 手机号 就把标签文字也替掉了——这不是正则问题,是没开「全字匹配」或没加词边界意识。
- 在「查找」框输入
邮箱时,务必点击右上角\b图标(启用「单词匹配」),等效于正则中的\b邮箱\b - 如果目标是替换「请填写邮箱:」这类提示语,但保留后面真实邮箱不被波及,就不要用全局替换,改用「逐个确认替换」(
Enter跳过,Alt+Enter替换) - 更可靠的做法:用正则把整行模式写清楚,例如只替换冒号后的占位符:
邮箱:\s*<code>[\w.-]+@[\w.-]+\.\w+→ 改成邮箱:{{email}}
替换后发现部分匹配失败?检查这三点
VSCode 正则替换不是“所见即所得”,很多失败源于隐藏配置或编码细节:
- 确保「查找」面板左下角启用了
.*按钮(即「正则表达式」模式),否则+、{2,}都当字面量处理 - 文件编码为 UTF-8 时,中文括号、全角符号才能被正确识别;若文件是 GBK 编码,
()可能无法匹配,建议统一转为 UTF-8(右下角点击编码 → 「Save with Encoding」→ 「UTF-8」) - 跨文件搜索时,「文件编码」设置不影响匹配逻辑,但会影响能否读取内容——某些含 BOM 的 UTF-8 文件可能被跳过,可临时勾选「使用忽略文件」旁的「包括不可读文件」排查
Ctrl+F 在几个典型文件里试跑一遍匹配结果,比盲目全局替换安全十倍。











