正则表达式速学:从零到正确写出邮箱验证
正则不只是程序员的活——批量处理 Excel、查找替换日志、表单验证都要用。本指南从最基础语法到常见模式,1 小时上手。
正则表达式(Regular Expression,简称 regex)是描述字符串模式的迷你编程语言。学会它的基础后,你能在几秒内完成原本需要写循环和判断才能做的事。本指南配合本站正则测试器,从最基础的语法讲到常用实战模式。
5 个核心元字符
.匹配任意单字符(除换行)*前一个字符 0 次或多次+前一个字符 1 次或多次?前一个字符 0 次或 1 次\转义后面的字符
例:a.b 匹配 a1b、acb、a b,但不匹配 ab(中间必须有字符)。
字符类速查
\d数字 [0-9] /\D非数字\w字母数字下划线 [a-zA-Z0-9_] /\W反向\s空白(空格、Tab、换行) /\S反向[abc]只能是 a 或 b 或 c[^abc]不能是 a/b/c[a-z]范围 a 到 z
锚点与边界
^行首(多行模式下每行开头)$行尾\b单词边界(介于\w和\W之间)\B反向
例:\bcat\b 匹配独立的 cat 单词,不匹配 caterpillar 中的 cat。
量词进阶
{n}恰好 n 次{n,}至少 n 次{n,m}n 到 m 次- 加
?变贪婪 → 懒惰:.*?尽量少匹配
例:手机号 1[3-9]\d{9}(1 + 3-9 任一数字 + 9 个数字)。
分组与捕获
(...)捕获组(可在结果中按 $1 引用)(?:...)非捕获组(性能更好,不返回结果)(?=...)正向先行断言(要满足但不消耗)(?!...)反向先行断言
常用模式(直接抄)
- 邮箱:
[\w.+-]+@[\w-]+\.[\w.-]+ - 中国手机号:
1[3-9]\d{9} - URL:
https?://[\w-./?#@!$&'()*+,;=%]+ - 中文字符:
[\u4e00-\u9fa5] - IPv4:
(\d{1,3}\.){3}\d{1,3} - 日期 YYYY-MM-DD:
\d{4}-\d{2}-\d{2}
本工具的「常用模式」按钮可一键加载这些,直接测试。
常见问题
正则在不同语言有差异吗?
有。本工具用 JavaScript 引擎,与 Python `re`、PHP PCRE 大致相同但细节有差。复杂正则建议先在目标语言测试。
为什么我的正则匹配太多?
可能默认贪婪了。`.*` 会尽量多吃,加 `?` 变懒惰:`.*?` 尽量少吃。
能用正则解析 HTML 吗?
简单提取可以,复杂场景请用 DOM 解析器(如 cheerio、BeautifulSoup)。HTML 嵌套结构正则很难表达。