写给初学者的正则表达式
更新 2026-07-06
正则表达式素来有难懂的名声 —— 像 ^\d{3}-\d{4}$ 这样一堵符号的墙。但其核心思想很简单,而懂一点正则,是任何跟文本打交道的人杠杆最高的技能之一。本指南从零讲起。
正则表达式是什么
正则表达式(regex)是一个描述一组字符串的 模式。你不是去找某个确切的词,而是描述你要找之物的 形状 —— “三个数字、一个短横、再四个数字” —— 引擎会找出所有符合的文本片段。它用于查找替换、校验输入(邮箱、电话号码),以及从文本里抽取数据。
字面字符
最简单的正则就是文本。模式 cat 会匹配输入中任何位置的 c-a-t 字母。大多数字符匹配它们自己 —— 威力来自少数几个特殊字符。
核心构件
字符类 —— 什么样的字符
\d—— 任意数字;\w—— 单词字符;\s—— 空白。.—— 任意一个字符。[aeiou]—— 集合中的任意一个字符;[a-z]—— 一个范围。
量词 —— 有多少个
*—— 零个或多个;+—— 一个或多个;?—— 零个或一个(可选)。{3}—— 恰好三个;{2,4}—— 二到四个之间。
锚点 —— 在哪里
^—— 字符串的开头;$—— 字符串的结尾。
读一个真实的例子
现在开头那堵符号的墙讲得通了:
^\d{3}-\d{4}$
^ start of string
\d{3} exactly three digits
- a literal dash
\d{4} exactly four digits
$ end of string它匹配一个 只 是 7 位电话号码(如 555-1234)的字符串 —— 前面没有别的,后面也没有。
别忘了转义
要匹配一个平常是特殊字符的字符 —— 一个字面的点或问号 —— 就在它前面加个反斜杠:\. 匹配一个真正的点。忘掉这一点是初学者头号错误,因为 . 否则会匹配 任意 字符。
保持练习
学得最快的办法是拿模式去试真实文本,看它匹配到什么。一边做一边开着 正则速查表,并用像 查找替换 这样的工具把模式应用到你自己的文本上。一旦正则想通了,那些原本枯燥的活儿 —— 重排一个列表、抽取每一个 URL、校验输入 —— 都变成了一行代码。
更多 网络与开发者
查看全部 网络与开发者 指南 →本指南提到的工具