← 返回博客

正则表达式入门教程:从零开始学Regex

2026年2月 · 阅读时间 6分钟

正则表达式(Regular Expression,简称Regex)是处理文本的瑞士军刀。无论是表单验证、日志分析、数据清洗,还是代码搜索替换,都离不开它。

基础语法

字符匹配

.匹配任意单个字符(换行符除外)
\d匹配数字 [0-9]
\w匹配字母数字下划线 [a-zA-Z0-9_]
\s匹配空白字符(空格、Tab、换行)
\D匹配非数字(\d的反义)
\W匹配非字母数字(\w的反义)

量词

*0次或多次
+1次或多次
?0次或1次
{n}恰好n次
{n,m}n到m次
{n,}至少n次

位置锚点

^字符串开头
$字符串结尾
\b单词边界

常用正则模式

手机号(中国):^1[3-9]\d{9}$
邮箱:^[\w.-]+@[\w.-]+\.\w+$
URL:^https?:\/\/[\w.-]+\.\w+
身份证号:^\d{17}[\dXx]$
IPv4地址:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
日期(YYYY-MM-DD):^\d{4}-\d{2}-\d{2}$
中文字符:[\u4e00-\u9fa5]+
HTML标签:<[^>]+>

实战示例

提取所有数字

// JavaScript

"价格是99.5元,共3件".match(/\d+\.?\d*/g)

// 结果: ["99.5", "3"]

替换敏感信息

// 手机号脱敏

"13812345678".replace(/(\d{3})\d{4}(\d{4})/, "$1****$2")

// 结果: "138****5678"

常见陷阱

⚠️ 贪婪匹配.* 默认尽可能多匹配,用 .*? 改为非贪婪

⚠️ 转义字符. * + ? 等特殊字符需要用 \ 转义

⚠️ 性能问题 — 避免嵌套量词如 (a+)+,可能导致灾难性回溯

⚠️ 多行模式 — 默认 ^$ 匹配整个字符串,加 m 标志匹配每行

在线测试工具

学正则最好的方式就是动手练。用我们的 正则表达式在线测试工具,实时高亮匹配结果,支持常用标志(g/i/m),还有常用模板一键使用。

更多开发者工具请访问 www.cyunyun.com