正则速查表
常用正则语法与示例速查。
| 分类 | 符号 | 说明 |
|---|---|---|
| 元字符 | . | 匹配除换行符外的任意单个字符 |
| 元字符 | \d | 匹配一个数字,等价于 [0-9] |
| 元字符 | \D | 匹配一个非数字字符 |
| 元字符 | \w | 匹配字母、数字或下划线,等价于 [A-Za-z0-9_] |
| 元字符 | \W | 匹配非单词字符 |
| 元字符 | \s | 匹配任意空白字符(空格、制表符、换行等) |
| 元字符 | \S | 匹配任意非空白字符 |
| 断言 | ^ | 匹配字符串(或多行模式下行)的开始位置 |
| 断言 | $ | 匹配字符串(或多行模式下行)的结束位置 |
| 断言 | \b | 匹配单词边界 |
| 断言 | \B | 匹配非单词边界 |
| 断言 | (?=...) | 正向先行断言:其后必须紧跟 ... 才匹配,不消耗字符 |
| 断言 | (?!...) | 负向先行断言:其后不能紧跟 ... |
| 断言 | (?<=...) | 正向后行断言:其前必须紧跟 ... |
| 断言 | (?<!...) | 负向后行断言:其前不能紧跟 ... |
| 量词 | * | 匹配前一项 0 次或多次 |
| 量词 | + | 匹配前一项 1 次或多次 |
| 量词 | ? | 匹配前一项 0 次或 1 次 |
| 量词 | {n} | 匹配前一项恰好 n 次 |
| 量词 | {n,} | 匹配前一项至少 n 次 |
| 量词 | {n,m} | 匹配前一项 n 到 m 次 |
| 量词 | *? +? ?? | 惰性(非贪婪)量词,尽量少匹配 |
| 字符类 | [abc] | 匹配 a、b、c 中的任意一个字符 |
| 字符类 | [^abc] | 匹配除 a、b、c 之外的任意字符 |
| 字符类 | [a-z] | 匹配 a 到 z 范围内的任意字符 |
| 字符类 | [a-zA-Z0-9] | 匹配字母或数字 |
| 分组 | (...) | 捕获分组,可通过序号引用 |
| 分组 | (?:...) | 非捕获分组,只分组不记录 |
| 分组 | (?<name>...) | 具名捕获分组,可通过 name 引用 |
| 分组 | a|b | 匹配 a 或 b |
常用正则示例
什么是正则速查表?
正则速查表是一份聚合常用正则表达式(Regular Expression)语法与典型场景示例的参考页面,而非一个“执行/测试”工具。内容通常包括:字符类(\d \w \s)、量词(* + ? {n,m})、锚点(^ $ \b)、分组与捕获(() (?:) (?<name>))、断言((?=) (?!) (?<=) (?<!)),以及常见业务场景的现成正则,比如邮箱、手机号、URL、身份证号的校验表达式。
为什么使用正则速查表?
正则语法本身简洁但符号密集,很多写法(比如非贪婪匹配.*?、命名捕获组、零宽断言)不常用就容易忘记,速查表可以在写代码或脚本时快速核对语法而不用每次去查文档。适合前端/后端开发者做表单校验、日志分析、文本清洗时随手查阅;相比正则在线测试工具(如regex101),速查表更侧重“语法记忆”而非“针对具体输入调试匹配结果”,两者常配合使用——先在速查表找到语法或现成正则,再拿到测试工具里用真实数据验证。
使用示例
手机号校验(中国大陆)
^1[3-9]\d{9}$ 匹配以1开头、第二位3-9、后面9位数字,共11位,如13812345678能匹配,1381234567(10位)不匹配。
邮箱粗略校验
^[\w.-]+@[\w-]+\.[a-zA-Z]{2,}$ 能匹配 [email protected],但真正符合RFC 5322标准的邮箱正则极其复杂,业务上常用简化版本再配合服务端二次校验。
非贪婪匹配的坑
对字符串 <a>x</a><b>y</b> 用 <.*> 会贪婪匹配到整个字符串<a>x</a><b>y</b>,改成 <.*?> 则只匹配到第一个<a>,这是初学者最常踩的坑。
使用提示
复杂正则建议加注释或拆分成多个简单正则配合业务逻辑判断,一条极长的“万能正则”往往难以维护和调试,可读性和可维护性有时比“一行解决”更重要。
常见问题
这份速查表包含哪些内容?
示例正则可以直接用吗?
数据会上传吗?
正则表达式能校验所有邮箱格式吗?
JS、Python、PCRE的正则语法一样吗?
什么是零宽断言?
贪婪和非贪婪有什么区别?
为什么我的正则在某些引擎里报错?
相关工具
← 返回工具箱· 数据均在浏览器本地处理,不上传服务器。