首页/开发/正则与编码速查/花括号量词的精确重复次数
正则基础45 条

花括号量词的精确重复次数

花括号量词把重复次数写成固定值、闭区间或无上界三种形式,默认贪婪且只作用于紧邻其前的单个元素。写长度与定长校验时应配合全串锚定,想约束整组必须加圆括号。

正则与编码速查开发更新于 2026-10-17
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌​‌​‌‌‌​​​‌​‌‌‌​‌​‌​‌‌​​​​‌​‌‌​‌‌‌​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​​‌‌​​‌‌​‌​​‌​‌‌​​‌​‌​‌‌‌​​‌​​​‌​‌‌​‌​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​​‌‌​‌‌​​‌​‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

精确控制次数

花括号把重复次数写成明确的区间:写一个数字表示必须正好重复那么多次,写「下界逗号上界」表示允许的取值范围,只写「下界逗号」表示不少于下界。它把「大概多少次」变成可校验的约束,是写严格模式时最该优先使用的量词。

区间与贪婪

花括号量词默认同样是贪婪的,会优先尝试上界,匹配失败再往下退。加问号可改成非贪婪,优先试下界。上下界相等时不存在选择余地,行为最确定,也最容易读懂。

基本信息

固定次数花括号内写单个数字,表示恰好重复该次数
区间次数下界逗号上界,两端都包含
无上界下界后直接跟右花括号,表示至少有下界那么多次
默认风格贪婪,先行尝试较大次数
边界限制各引擎对上界有不同上限,写极值时以目标引擎文档为准
转义差异POSIX 基本正则里花括号需要转义才当量词用

典型使用场景

  • 校验证件号、订单号这类长度固定的字段,比反复堆叠字符更清楚
  • 匹配手机号、区号等长度区间的数字串
  • 校验密码长度范围,规则直接写在模式里,便于评审
  • 匹配固定宽度的日志字段或定长编码
  • 限制重复段落数量,避免无限重复造成的性能问题

次数约束的写法

次数约束的写法
import re
re.fullmatch(r'\d{6}', '123456')      # 恰好六位数字
re.fullmatch(r'\w{6,12}', 'abc12345') # 长度在六到十二位之间
re.findall(r'\d{2,}', '1 22 333')      # 至少两位的数字串
re.fullmatch(r'[A-F0-9]{8}-[A-F0-9]{4}', 'A1B2C3D4-0000')  # 定长段拼接
re.fullmatch(r'a{2,5}?', 'aaaaa')      # 非贪婪版本,尽量取下限
re.search(r'(ab){2}', 'abab')          # 分组重复:整组重复两次

花括号写法对照

写法含义常见用途
单数字恰好重复该次数定长编号、定长字段
下界逗号上界次数在闭区间内长度范围校验
下界逗号至少重复下界次至少若干位的数字
加问号非贪婪,优先取下界配合后续约束做最短匹配
写长度校验时优先用带锚点的全串匹配,而不是把花括号量词塞在任意位置。没有锚点时,模式只要求「存在一段满足长度约束的子串」,与「整个字段长度合规」是两回事。
花括号量词作用于紧邻其前的单个元素。想限制整组重复次数必须加圆括号,否则实际限制的是最后一个字符的重复次数,这是最常见的语义偏差来源。

易错点

  • 把花括号直接跟在多条内容后面,实际只约束最后一个字符,与预期完全不符
  • 区间上下界写反,多数引擎报语法错误,少数宽松引擎当成字面量处理
  • 依赖极大上界做校验,遇到超长输入时回退次数暴涨,性能不可控
  • 在 POSIX 基本正则里直接写花括号,被当作普通字符,模式静默不符预期

数据来源与参考

  • PCRE2 官方文档 pcre2pattern(3):量词与重复次数上限
  • IEEE POSIX.1-2017 Base Definitions 第 9 章:区间表达式
  • Python 官方文档 re 模块:花括号重复说明

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/regex/regex-quantifier-braces.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌​‌​‌‌‌​​​‌​‌‌‌​‌​‌​‌‌​​​​‌​‌‌​‌‌‌​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​​‌‌​​‌‌​‌​​‌​‌‌​​‌​‌​‌‌‌​​‌​​​‌​‌‌​‌​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​‌​‌‌​​​‌‌​‌‌​​‌​‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​