正規表現先読み
(?=...) や (?!...) で後続パターンを条件にマッチさせる正規表現の構文。文字列を消費せずに条件を検査する。
正規表現の先読み (lookahead) は、特定のパターンが後続するかどうかを条件にマッチを判定する構文です。肯定先読み (?=...) は指定パターンが続く場合にマッチし、否定先読み (?!...) は続かない場合にマッチします。
先読みはゼロ幅アサーションと呼ばれ、マッチ位置を進めずに条件だけを検査します。たとえば d+(?=円) は「100円」の「100」にマッチしますが、「円」自体はマッチ結果に含まれません。正規表現入門の書籍で先読みの基礎を学べます。
パスワード検証では複数の先読みを組み合わせて「英字を含む」「数字を含む」「8 文字以上」などの条件を同時にチェックできます。
JavaScript では後読み (lookbehind) (?<=...) と (?<!...) も ES2018 からサポートされています。正規表現実践の書籍で高度なパターンを習得できます。