正規表現を鉄道図(線路のように分岐とループで描いた図)にして、
日本語の読み下しとキャプチャ番号を並べます。
(a+)+ のような破滅的バックトラックや、
. が改行にマッチしないことなど、当てはまる落とし穴は自動で指摘します。
さらに図から例文字列を作って、その場でマッチするか確かめます
(図と式が食い違っていたら、そこで分かります)。
図(=解析した構造)だけを見て文字列を組み立て、それを元の正規表現そのものに 当てています。全部 ✓ なら、図の読み方と式の意味はここまでは食い違っていません。 文字列を入れて試したいときは 正規表現テスター へ。
▶ から右の ◀ まで、
線に沿って通った箱の中身をつなげたものが、この正規表現にマッチする文字列です。
分岐はどれか1つを選び、ループは戻ってきた回数だけくり返します。| は左から順)。
ループの脇に「最小一致」と出ているときは、*? のように
できるだけ回らないほうを先に試します。\1 や $1 で後から参照できます。
オレンジの破線は先読み・後読みで、
条件を見るだけで文字を消費しません(通っても位置が進みません)。canvas の文字幅測定で実際に測っているので、フォントが変わってもはみ出しません。RegExp と一致するかを
まとめて突き合わせる検証を ソース側に置いています。v フラグの文字クラスの集合演算、
\p{...} の細かい分類は、図では1つの箱にまとめて表示します。
図が描けないほど複雑なときは、その旨を出します。