正規表現は「一致してはいけない例」でも試す

1件一致しただけでは、パターンが意図どおりとは言えません。正しそうに見えても拒否すべき文字列を含めると、検証の意味が明確になります。

まず普通の言葉で条件を書く

段落の中からコードを探すのか、行全体を検証するのかを決めます。不正な入力の一部分だけが一致しても、本来の要件を満たすとは限りません。

文字、長さ、境界が分かる小さな例を使います。長い入力では成否の理由が見えにくく、書いていない業務ルールはパターンに強制できません。

フラグと文字体系によって結果が変わる

gは複数の一致を求め、iは大小文字の扱いを変えます。JavaScriptの\wは全言語の単語を表しません。幅広い文字にはuとUnicodeプロパティが必要な場合があります。

ToolRoofはJavaScript構文とg、i、m、s、uを試します。位置はUTF-16単位で、見える文字の数とは限りません。別のエンジンでも同じ動作とは考えないでください。

参考資料: MDN — JavaScript regular expressions, flags and Unicode

例を通過しても安全性の証明ではない

一致しない例、想定する最小・最大の境界例を含めます。複数行で使うなら、その形式も確認します。

処理には上限があり、表示は最大200件です。上限到達はそれ以外の一致がないという意味ではありません。あらゆる入力の速度・安全性を保証せず、置換コードや入力したテキストも実行しません。

例:受け入れる2件と似ているが違う2件

ID-17 ID-204 ID-7 XID-99に\bID-\d{2,3}\bをg付きで使うとID-17とID-204が見つかります。ID-7は短すぎ、単語境界がXID-99の途中からの一致を防ぎます。

gなしでは最初の一致だけ返ります。これは例のコードの規則で、実在する識別子、アクセス権、ほかのシステム条件を確認するものではありません。

参考資料