正規表現量指定子

*, +, ?, {n,m} などの繰り返し回数を指定するメタ文字。直前の要素の出現回数を制御する。

正規表現量指定子 (Quantifier) は、直前のパターン要素の繰り返し回数を指定するメタ文字です。* (0 回以上)、+ (1 回以上)、? (0 回または 1 回)、{n,m} (n 回以上 m 回以下) があります。

デフォルトでは量指定子は「貪欲 (greedy)」に動作し、できるだけ多くの文字にマッチします。? を付けると「最短 (lazy)」マッチになり、最小限の文字にマッチします。正規表現詳解の書籍で貪欲マッチと最短マッチの違いを学べます。

たとえば /a{2,4}/ は a が 2〜4 回連続する部分にマッチし、/d+/ は 1 桁以上の数字にマッチします。文字数制限の検証にも量指定子は有用です。

量指定子の過度なネストはバックトラッキングの爆発 (ReDoS) を引き起こす可能性があるため、パフォーマンスに注意が必要です。プログラミングセキュリティの書籍で ReDoS 対策が解説されています。