正则表达式是一种描述字符串“结构、特征、规律”的文本模式规则,用于验证、提取、替换和分割符合特定样式的文本,由普通字符和具有特殊含义的元字符组成。

正则表达式就是一种“文本模式说明书”——用一小串特殊符号组成的规则,告诉计算机:“我要找的是什么样的字符串”。它不关心具体是哪几个字,而是关注“结构、特征、规律”,比如“以字母开头、后面跟3到8位数字、结尾是@符号和域名”(邮箱),或者“连续11位纯数字”(手机号)。
它不是搜索关键词,而是描述“样子”
普通搜索像说“找‘张三’这个词”,正则表达式更像说“找一个名字:两个或三个汉字,第一个不能是‘老’或‘小’,最后一个必须是‘明’或‘华’”。它匹配的是符合规则的“一类字符串”,而不是固定的一串字符。
- 输入 abc → 就只匹配“abc”这三个字母连在一起;
- 输入 a.c → 点号(.)是元字符,代表“任意一个非换行符”,所以能匹配“abc”“a2c”“a c”;
- 输入 \d{11} → \d 表示“一位数字”,{11} 表示“重复11次”,整体就表示“11位连续数字”,比如手机号13812345678。
它干四件常见又实在的事
你几乎每天都在间接用它:网页填邮箱时提示“格式错误”,后台就在跑正则;编辑器里按 Ctrl+H 批量删空行,背后也是正则在工作。
- 验证:检查用户输的手机号是不是11位、密码是否含大小写字母和数字;
- 提取:从一段日志里把所有IP地址(如192.168.1.1)一口气揪出来;
- 替换:把文档中所有“第X章”统一改成“【第X章】”,X可以是任意数字;
- 分割:按“逗号、分号或中文顿号”把一串标签切开,不用写三段if逻辑。
它由“普通字符”和“有魔法的符号”组成
大部分字符照字面意思理解(比如写个a就只认a),但十几个常用符号自带含义,比如:
- \d → 数字(0–9);
- \w → 字母、数字或下划线(适合匹配变量名、用户名);
- \s → 空格、制表符、换行等空白;
- + → 前面那个东西至少出现一次;
- * → 前面那个东西可有可无,也可以很多个;
- ^ 和 $ → 分别代表“开头”和“结尾”,加上它们,就能确保整条字符串完全符合规则,不被部分匹配糊弄。
它没有那么玄,只是需要一点“读习惯”
刚看 ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ 确实头大,但它拆开就是:“开头→用户名(允许字母数字和几个符号)→@→域名(字母数字和点)→点→至少两个字母结尾”。练几次,就像看乐谱识音符一样自然。真正难的不是语法,而是想清楚你要匹配的“样子”到底是什么。










