正規表現でブラウザが固まる理由
正規表現の中には、入力によって非常に多くのマッチ候補を試すものがあります。 特に繰り返しが入れ子になった式では、処理時間が急激に増えることがあります。
このツールでは正規表現の実行を Web Worker に分離しています。 処理が長引いた場合はメインスレッドから Worker を終了し、ページ全体が固まることを避けます。
キャプチャグループの使い方
正規表現を括弧で囲むと、マッチ全体とは別に、その部分にマッチした文字列を キャプチャグループとして取得できます。
置換文字列では番号付きグループを $1 のように参照できます。
名前付きグループは $<name> の形式で参照できます。
フラグの意味
g— すべてのマッチを探します。i— 大文字小文字を区別しません。m—^と$を行ごとに扱います。s—.が改行にもマッチします。u— Unicode として扱います。y— 前回のマッチ位置から続けて探します。
特に g と m は役割が異なります。
g は複数のマッチを探すための指定で、
m は行頭・行末を判定する ^ と $ の扱いを変えます。
よくある誤り
- 正規表現そのものの記号と、JavaScript の文字列内でのエスケープを混同する。
- 貪欲な量指定子によって、想定より長い範囲にマッチする。
- 括弧や文字クラス
[ ]を閉じ忘れる。 - 量指定子
*+?を不適切な位置に置く。