正規表現先読み

(?=...) や (?!...) で後続パターンを条件にマッチさせる正規表現の構文。文字列を消費せずに条件を検査する。

正規表現の先読み (lookahead) は、特定のパターンが後続するかどうかを条件にマッチを判定する構文です。肯定先読み (?=...) は指定パターンが続く場合にマッチし、否定先読み (?!...) は続かない場合にマッチします。

先読みはゼロ幅アサーションと呼ばれ、マッチ位置を進めずに条件だけを検査します。たとえば d+(?=円) は「100円」の「100」にマッチしますが、「円」自体はマッチ結果に含まれません。正規表現入門の書籍で先読みの基礎を学べます。

パスワード検証では複数の先読みを組み合わせて「英字を含む」「数字を含む」「8 文字以上」などの条件を同時にチェックできます。

JavaScript では後読み (lookbehind) (?<=...)(?<!...) も ES2018 からサポートされています。正規表現実践の書籍で高度なパターンを習得できます。