← コラム一覧

その正規表現、本当にマッチしますか。日本向けパターン集つきの無料テスターを作った

BEETLEのQA支援・無料QAテストツールのバナー

入力チェックの不具合を追っていると、だいたい同じところに行き着きます。「正規表現、どこかからコピーしてきましたよね?」

悪気はないんです。メールアドレスの正規表現なんて、毎回書きたいものではありません。検索して、上に出てきたものを貼る。動いているように見える。レビューでも誰も読まない。そうやって、本番で foo+bar@example.co.jp が弾かれます。

「動いているように見える」がいちばん厄介です

正規表現の怖いところは、間違っていてもふつうの入力では通ってしまうことです。tanaka@example.com は何を貼っても通ります。落ちるのは、プラス記号の入ったアドレス、長いドメイン、ハイフン入りの会社名。つまり、実際に使っている人のごく一部です。

QAの目で見ると、これは典型的な「代表値だけ確認して通ったつもりになる」パターンです。テスト設計で境界値や異常系を並べるのと同じことを、正規表現にもやる必要があります。ところが、そのための場所が意外とない。エディタで確かめるには実装に組み込むしかなく、オンラインのテスターは英語圏の例ばかりで、日本の電話番号や郵便番号は自分で書くことになります。

パターン集と、その場で試す欄をひとつにしました

作ったのは正規表現テスターです。日本の入力でよく使うパターンを並べておいて、押すとテスターに入る形にしました。

  • メールアドレス・電話番号(ハイフンあり/なし)・郵便番号・URL
  • ひらがなだけ・カタカナだけ・半角英数字だけ
  • 全角文字を見つける・前後の空白を見つける

下のテスターに文字列を入れると、マッチしたところが色で出ます。パターンとフラグはその場で書き換えられるので、「この会社のドメインだと落ちる」を確かめてから直せます。

無料・登録不要。ファイルはどこにも送りません

業務で使う道具なので、そこが気になると思います。

  • 無料 … 課金も回数制限もありません
  • 登録不要 … アカウントもメールアドレスも要りません
  • ブラウザの中だけで動きます … 生成も判定も、その端末の上で完結します。サーバーには何も送っていません
  • インストール不要 … 会社のPCに何かを入れる稟議は要りません

試すべきなのは、通る入力ではありません

使うときのコツをひとつ。通ってほしい入力を1つ入れて満足しないことです。見るべきなのは、次の3種類です。

  • 通ってほしいのに落ちるもの … プラス記号つきのメール、ハイフンなしの電話番号、長いドメイン。ここが実害の出る側です
  • 落ちてほしいのに通るもの … 全角の混ざった数字、前後に空白がついた入力、途中に改行が入ったもの
  • 境界 … 桁数の下限と上限、そのひとつ外側

とくに前後の空白は、コピー&ペーストで日常的に混ざります。「なぜか登録できない」の問い合わせを追うと、末尾に半角スペースがひとつ付いていた、というのは何度も見ました。空白を見つけるパターンを用意してあるのは、そのためです。

正直に書くと、正規表現で完全な検証はできません

メールアドレスを厳密に判定する正規表現は、現実には使いものになりません。規格どおりに書くと、とても人が読めない長さになります。実務では「明らかにおかしいものを弾く」までに留めて、本当に届くかどうかは確認メールで確かめる、という切り分けのほうが安全です。

このツールのパターンも、その方針で書いています。厳密さより、通ってほしい人を弾かないことを優先しています。

コピーする前に、1分だけ試す

検索して出てきた正規表現をそのまま貼るのは、他人が書いたテストケースを読まずに合格印を押すのに似ています。1分で確かめられる場所があれば、たいていの事故はそこで止まります。

入力チェックまわりのテスト観点そのものはTESTパターン集に、用語の確認はQA・バグ用語辞典にまとめてあります。あわせてどうぞ。

無料・登録不要。日本向けのパターン集と、その場でマッチを確かめられるテスターです。

正規表現テスターを使ってみる

関連記事