ExcelのREGEXTEST関数の使い方|正規表現でセルのパターンをチェック

スポンサーリンク

「このセルに入っている文字列、メールアドレスとして正しい形式かな?」「電話番号の列に変な文字が混じっていないかチェックしたい」。データの入力チェックをしていると、こんな場面によく出くわしますよね。

これまでのExcelでは、ISNUMBERやSEARCH関数を組み合わせたり、長い条件式を書いたりするしかありませんでした。かなり面倒ですよね。

そんなときに便利なのがREGEXTEST関数です。正規表現を使って、セルの文字列が特定のパターンに一致するかを一発でチェックできます。

この記事では、ExcelのREGEXTEST関数の使い方を基本から実務例まで解説します。正規表現の早見表や姉妹関数との使い分けもまとめましたので、ぜひ参考にしてください。

ExcelのREGEXTEST関数とは?

REGEXTEST関数は、セルの文字列が指定した正規表現パターンに一致するかを判定するExcelの関数です。読み方は「レジェックステスト」で、結果は TRUE または FALSE で返ります。

2024年にMicrosoft 365へ追加された比較的新しい関数で、REGEXEXTRACT・REGEXREPLACEと合わせて「正規表現3関数」と呼ばれています。

正規表現というと難しそうに感じますが、使うパターンは意外と限られています。この記事のサンプルをコピーすれば、実務で十分使えますよ。

どんなときに使う関数か

REGEXTEST関数は次のようなシーンで活躍します。

  • メールアドレスが正しい形式で入力されているかチェックしたいとき
  • 電話番号や郵便番号が数字のみか確認したいとき
  • セルに特定のキーワードや文字パターンが含まれるか判定したいとき
  • FILTER関数と組み合わせて条件に合う行だけ抽出したいとき

従来のISNUMBER+SEARCH構文と比べて、数式が圧倒的にスッキリしますよ。

利用条件(Microsoft 365が必須)

REGEXTEST関数を使うには、Microsoft 365のサブスクリプションが必要です。Excel 2019やExcel 2021などの永続ライセンス版では使えません。

対応環境は次のとおりです。

  • Excel for Microsoft 365(Windows / Mac)
  • Excel for the web

お使いのバージョンが対応しているか、事前に確認しておきましょう。バージョンが古いと #NAME? エラーになってしまいます。

REGEXTEST関数の構文と引数

基本構文

=REGEXTEST(テキスト, 正規表現パターン, [大文字小文字の区別])

カッコ内に、チェックしたいテキストと正規表現パターンを指定します。第3引数は省略可能です。

第1引数:テキスト

チェック対象の文字列またはセル参照を指定します。

=REGEXTEST("abc123", "[0-9]")
=REGEXTEST(A2, "[0-9]")

直接文字列を入れる場合はダブルクォーテーションで囲みます。実務ではセル参照を使うのが一般的です。

なお、セルが数値型の場合はそのままでは使えません。TEXT関数(数値を指定した書式の文字列に変換する関数)で文字列化してから渡しましょう。

第2引数:正規表現パターン

マッチさせたい正規表現をダブルクォーテーションで囲んで指定します。

=REGEXTEST(A2, "^[0-9]+$")

上の例は「A2が数字だけで構成されているか」をチェックする数式です。記号の意味は後ほど早見表で整理します。

第3引数:大文字小文字の区別

大文字と小文字を区別するかを数値で指定します。省略すると0(区別する)が使われます。

  • 0(省略時):大文字と小文字を区別する
  • 1:大文字と小文字を区別しない

英字を含むパターンを使うときだけ気にすれば大丈夫ですよ。

=REGEXTEST("ABC", "[a-z]")      'FALSE(小文字のみにマッチ)
=REGEXTEST("ABC", "[a-z]", 1)   'TRUE(区別しないのでマッチ)

正規表現の基本パターン早見表

REGEXTEST関数で使える正規表現は、PCRE2(Perl互換の正規表現)と呼ばれるものです。まずはよく使う記号だけ押さえておけば十分です。

文字クラス

記号意味
d数字1文字(0〜9)dd は「12」にマッチ
D数字以外の1文字D は「a」にマッチ
w英数字またはアンダースコアw+ は「hello_1」にマッチ
s空白文字(半角スペース・タブ)s は半角スペースにマッチ
.任意の1文字a.c は「abc」「a1c」にマッチ
[abc]a・b・cのいずれか1文字[abc] は「a」にマッチ
[a-z]a〜zのいずれか1文字小文字の英字にマッチ
[0-9]0〜9のいずれか1文字d と同じ
[^0-9]0〜9以外の1文字数字以外にマッチ

位置と繰り返し

記号意味
^文字列の先頭^abc は「abc」で始まる文字列
$文字列の末尾xyz$ は「xyz」で終わる文字列
*直前の0回以上の繰り返しa* は「」「a」「aaa」にマッチ
+直前の1回以上の繰り返しa+ は「a」「aaa」にマッチ
?直前の0回または1回colou?r は「color」「colour」
{n}直前のn回の繰り返しd{4} は数字4桁
{n,m}直前のn回以上m回以下d{3,5} は数字3〜5桁
``または`catdog` は「cat」か「dog」

TIP

特殊記号そのものを検索したいときは でエスケープします。たとえば「.」をそのままチェックしたいなら . と書きます。

^$ を両方付けると「文字列全体が完全一致するか」をチェックできます。部分一致でよいなら両方とも省略しましょう。

Excel REGEXTEST関数の基本的な使い方

それでは実際に数式を組み立ててみましょう。

文字列に数字が含まれるかチェックする

もっともシンプルな例です。A列の文字列に数字が1文字でも含まれるかを判定します。

=REGEXTEST(A2, "d")

「abc」ならFALSE、「abc123」ならTRUEが返ります。d は「数字1文字」を表す記号です。

数字のみで構成されているかチェックする

文字列全体が数字だけでできているかを判定します。郵便番号や電話番号の入力チェックに便利です。

=REGEXTEST(A2, "^d+$")

^$ で文字列全体を挟み、d+ で「数字1文字以上の繰り返し」を表しています。「123456」ならTRUE、「123-456」はハイフンが含まれるのでFALSEになります。

大文字のアルファベットが含まれるかチェックする

パスワードチェックなどで使うパターンです。

=REGEXTEST(A2, "[A-Z]")

A2に「password」が入っていればFALSE、「Password」ならTRUEです。大文字が1文字でもあればTRUEを返します。

IF関数と組み合わせて判定結果を表示する

TRUE・FALSEだけだとわかりにくいので、IF関数と組み合わせてメッセージで返すのがおすすめです。

=IF(REGEXTEST(A2, "^d+$"), "数字のみ", "数字以外を含む")

見た目もわかりやすくなり、チェック結果の確認がラクになりますよ。

実践的な使い方・応用例

メールアドレスの形式をチェックする

顧客リストや問い合わせフォームのデータで、メールアドレスが正しい形式かをチェックする例です。

=REGEXTEST(A2, "^[w.+-]+@[w-]+.[w.-]+$")

一見複雑ですが、分解すると次のような意味になります。

  • ^[w.+-]+ :先頭は英数字・ドット・プラス・ハイフンの1文字以上
  • @ :アットマーク
  • [w-]+ :ドメイン名部分(英数字とハイフン)
  • .[w.-]+$ :ドット+トップレベルドメインで終わる
A列(入力値)B列(=REGEXTESTの結果)
taro@example.comTRUE
hanako.suzuki@biz-tactics.co.jpTRUE
info@exampleFALSE
taro[at]example.comFALSE

厳密なRFC準拠ではありませんが、実務レベルのチェックには十分です。IF関数と組み合わせて「要確認」のラベルを付けておくと、修正漏れを防げますよ。

電話番号が数字とハイフンのみか確認する

電話番号欄に余計な文字(全角やスペース)が入っていないかチェックする例です。

=REGEXTEST(A2, "^[0-9-]+$")

「03-1234-5678」はTRUE、「03-1234-5678(内線1)」は括弧が含まれるのでFALSEになります。

ハイフンなしの数字のみに統一したい場合は次の数式を使います。

=REGEXTEST(A2, "^d{10,11}$")

d{10,11} は「数字10桁〜11桁」を意味します。携帯番号(11桁)と固定電話(10桁)の両方に対応できます。

郵便番号の形式をチェックする

日本の郵便番号(7桁、ハイフン区切り)のチェックです。

=REGEXTEST(A2, "^d{3}-d{4}$")

「100-0001」はTRUE、「1000001」や「100-001」はFALSEになります。ハイフンの位置までしっかりチェックできるのがポイントです。

セルに特定キーワードが含まれるか判定する

複数のキーワードのいずれかが含まれるかを判定する例です。「緊急」「至急」「重要」のどれかが本文に含まれるメールを検出するイメージです。

=REGEXTEST(A2, "緊急|至急|重要")

|(パイプ)は「または」を意味します。IF関数と組み合わせれば、優先度の自動仕分けにも使えますよ。

=IF(REGEXTEST(A2, "緊急|至急|重要"), "優先対応", "")

FILTER関数と組み合わせて条件抽出する

REGEXTEST関数のすごいところは、FILTER関数と組み合わせて行単位の抽出ができる点です。

A2:B100のデータから、A列が「東京」で始まる行だけを抽出する例です。

=FILTER(A2:B100, REGEXTEST(A2:A100, "^東京"))

スピル(数式が自動で配列に展開される機能)に対応しているので、1つの数式で複数行を一気に絞り込めます。「東京都」「東京支店」などを一括で拾えますよ。

よくあるエラーと対処法

REGEXTEST関数で表示されるエラーと対処法をまとめました。

#VALUE! エラー

原因: 第2引数に無効な正規表現を指定した。または第1引数に数値や日付などの非文字列を直接渡した。

対処法: 正規表現パターンを見直しましょう。特にエスケープ忘れ(( をそのまま使うなど)が多いので注意してください。数値セルを渡す場合はTEXT関数で文字列化しましょう。

=REGEXTEST(TEXT(A2, "0"), "^d+$")

#NAME? エラー

原因: REGEXTEST関数に対応していないバージョンのExcelで使っている。または関数名のスペルミス。

対処法: Microsoft 365のサブスクリプションで最新版にアップデートしてください。Excel 2019・2021・LTSC 2024などでは使えません。関数名のスペルも確認しましょう。

意図したとおりにマッチしない

原因: 日付セルが対象になっている。日付はExcel内部ではシリアル値(数値)として扱われるため、表示形式とは異なる値が渡されます。

対処法: TEXT関数で文字列化してから渡します。

=REGEXTEST(TEXT(A2, "yyyy/mm/dd"), "^2026")
エラー原因対処法
#VALUE!無効な正規表現・非文字列パターン見直し・TEXTで変換
#NAME?非対応バージョンMicrosoft 365に更新
意図しないFALSE日付シリアル値が対象TEXT関数で文字列化

エラーが出ても原因は限られているので、落ち着いて確認すれば大丈夫ですよ。

REGEXEXTRACT・REGEXREPLACEとの使い分け

REGEXTEST関数には2つの姉妹関数があります。用途が異なるので、目的に合わせて使い分けましょう。

関数戻り値用途
REGEXTESTTRUE / FALSEパターンに一致するかを判定する
REGEXEXTRACT一致した文字列パターンに一致する部分を抜き出す
REGEXREPLACE置換後の文字列パターンに一致する部分を別の文字列に置き換える

使い分けのイメージは次のとおりです。

  • 「メールアドレスとして正しいか?」→ REGEXTEST
  • 「本文からメールアドレスだけ抜き出したい」→ REGEXEXTRACT
  • 「電話番号のハイフンを削除したい」→ REGEXREPLACE

3つとも同じPCRE2の正規表現を使うので、パターンの書き方は共通です。REGEXTESTで覚えた知識はそのまま他の2関数でも活きますよ。

まとめ

REGEXTEST関数は、Excelのセル上で正規表現を使ったパターンチェックができる関数です。

この記事のポイントを整理します。

  • 構文は =REGEXTEST(テキスト, 正規表現パターン, [大文字小文字の区別])
  • Microsoft 365のサブスクリプションが必要
  • 戻り値はTRUE / FALSEのシンプルな形
  • 第3引数を1にすると大文字小文字を区別しない
  • 正規表現は d(数字)^ $(先頭・末尾)あたりから覚えるのがおすすめ
  • メールアドレス・電話番号・郵便番号の形式チェックに便利
  • FILTER関数と組み合わせると条件抽出にも使える
  • 姉妹関数にREGEXEXTRACT(抽出)とREGEXREPLACE(置換)がある

まずは =REGEXTEST("123abc", "d") のようなシンプルな式から試してみてください。データクレンジングや入力チェックの作業がぐっとラクになりますよ。

タイトルとURLをコピーしました