Tool House

正则表达式速查表:常用元字符与实战实例

分类:开发技巧 作者:admin 更新:2026-10-03T13:54:32

把最常用的正则元字符、量词、分组与断言整理成一张能贴在手边的表,再配上手机号、日期、IP、邮箱等常见校验实例,以及贪婪与非贪婪的区别。

正则不需要背,需要的是知道「有这个东西」然后查。这份速查表按用途组织,配合正则测试工具实时验证。

元字符:单个字符的匹配

  • . 任意字符(默认不含换行)
  • \d 数字,等价 [0-9]
  • \D 非数字
  • \w 单词字符(字母、数字、下划线)
  • \W 非单词字符
  • \s 空白(空格、制表符、换行)
  • \S 非空白
  • [abc] 字符集合中的任意一个
  • [^abc] 除这些字符外的任意一个
  • [a-z] 范围

量词:控制出现次数

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

贪婪与非贪婪是高频踩坑点:默认贪婪,<.*> 会把 <a><b> 整段匹配进去;加上 ? 变成 <.*?>,只匹配到第一个 >。

分组与引用

  • (abc) 捕获分组,可以用 \1 反向引用
  • (?:abc) 非捕获分组,只分组不占编号
  • (?<name>abc) 命名分组,便于取语义化的值
  • a|b 或

边界与断言

  • ^ 行开头(多行模式下每行开头)
  • $ 行结尾
  • \b 单词边界
  • (?=abc) 前瞻:后面必须是 abc
  • (?!abc) 否定前瞻:后面不能是 abc
  • (?<=abc) 后顾:前面必须是 abc

断言只做「看一眼」的判断,不消耗字符,这在替换场景里特别有用。

常用实例

中国大陆手机号:

^1[3-9]\d{9}$

日期(YYYY-MM-DD,宽松校验):

^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$

IPv4(每段 0~255):

^((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$

提取 HTML 标签之间的文本(非贪婪):

>([^<]*)<

三条实战建议

第一,能不用正则就不用。解析 JSON、XML、HTML 请用对应解析器——正则处理嵌套结构注定不可靠。

第二,注意回溯爆炸。像 (a+)+$ 这种嵌套量词在长字符串上会指数级耗时,是正则拒绝服务(ReDoS)的典型来源。约束输入长度、避免嵌套量词。

第三,大小写与多行的开关别忘了。i 忽略大小写、m 多行、s 让 . 匹配换行、g 全局。少开一个,行为差很远。

← 返回知识库 回到首页