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

スポンサーリンク

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

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

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

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

  1. ExcelのREGEXTEST関数とは?
    1. どんなときに使う関数か
    2. 利用条件(Microsoft 365が必須)
  2. REGEXTEST関数の構文と引数
    1. 基本構文
    2. 第1引数:テキスト
    3. 第2引数:正規表現パターン
    4. 第3引数:大文字小文字の区別
  3. 正規表現の基本パターン早見表
    1. 文字クラス
    2. 位置と繰り返し
  4. Excel REGEXTEST関数の基本的な使い方
    1. 文字列に数字が含まれるかチェックする
    2. 数字のみで構成されているかチェックする
    3. 大文字のアルファベットが含まれるかチェックする
    4. IF関数と組み合わせて判定結果を表示する
  5. 実践的な使い方・応用例
    1. メールアドレスの形式をチェックする
    2. 電話番号が数字とハイフンのみか確認する
    3. 郵便番号の形式をチェックする
    4. セルに特定キーワードが含まれるか判定する
    5. FILTER関数と組み合わせて条件抽出する
  6. よくあるエラーと対処法
    1. #VALUE! エラー
    2. #NAME? エラー
    3. 意図したとおりにマッチしない
  7. REGEXEXTRACT・REGEXREPLACEとの使い分け
  8. REGEXTEST vs ISNUMBER+FIND:どちらを使うべきか
    1. 比較:「@が含まれるか」を判定する
    2. どちらを使うか選ぶ基準
  9. ビジネスデータ向け正規表現パターン集
    1. 日本ビジネスでよく使うパターン
    2. 数値・金額のチェックに使えるパターン
  10. FILTER関数との組み合わせ:一致行を一括抽出する
    1. 基本:特定パターンの行だけ抽出する
    2. 応用:メールアドレスの不正データを抽出する
    3. 応用:複数パターンのいずれかに一致する行を抽出する
    4. 注意:FILTERと組み合わせるときは範囲のサイズを揃える
  11. 関連記事
  12. まとめ

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 vs ISNUMBER+FIND:どちらを使うべきか

REGEXTEST関数が使える環境であれば、従来のISNUMBER+FINDの組み合わせよりも積極的にREGEXTESTを選ぶべきです。両者の違いを整理します。

比較:「@が含まれるか」を判定する

ISNUMBER+FIND(従来の方法)

=ISNUMBER(FIND("@", A2))

REGEXTEST(新しい方法)

=REGEXTEST(A2, "@")

単純な部分一致なら見た目の差は小さいですが、「メールアドレスの形式として正しいか」という少し複雑な条件になると差が広がります。

ISNUMBER+FINDで複数条件(ハイフン区切り数字かどうか)

=AND(ISNUMBER(FIND("-", A2)), ISNUMBER(VALUE(SUBSTITUTE(A2, "-", ""))))

かなり読みにくくなります。

REGEXTESTで同じ条件

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

シンプルで意図が一目瞭然です。

どちらを使うか選ぶ基準

条件推奨
Microsoft 365を使っているREGEXTEST
完全一致・部分一致だけの単純チェックどちらでも可
複数条件・パターンが複雑REGEXTEST一択
Excel 2019・2021など永続ライセンスISNUMBER+FIND

ISNUMBER+FINDは「@が含まれるか」のような部分一致に限ればシンプルで動きますが、ハイフンの位置・桁数・先頭末尾の制約などを加えるたびにネストが深くなっていきます。Microsoft 365ユーザーはREGEXTESTに統一するほうが保守しやすいです。

ビジネスデータ向け正規表現パターン集

実務でよく使うパターンをまとめました。パターンをそのままコピーして使えます。

日本ビジネスでよく使うパターン

チェック内容正規表現パターン数式例
郵便番号(〒123-4567形式)^d{3}-d{4}$=REGEXTEST(A2, "^d{3}-d{4}$")
郵便番号(ハイフンなし7桁)^d{7}$=REGEXTEST(A2, "^d{7}$")
固定電話(市外局番含む)^d{2,4}-d{2,4}-d{4}$=REGEXTEST(A2, "^d{2,4}-d{2,4}-d{4}$")
携帯電話(090/080/070)^0[789]0-d{4}-d{4}$=REGEXTEST(A2, "^0[789]0-d{4}-d{4}$")
メールアドレス(簡易)^[w.+-]+@[w-]+.[w.-]+$=REGEXTEST(A2, "^[w.+-]+@[w-]+.[w.-]+$")
数字のみ(任意桁)^d+$=REGEXTEST(A2, "^d+$")
半角英数字のみ^[a-zA-Z0-9]+$=REGEXTEST(A2, "^[a-zA-Z0-9]+$")
全角文字が含まれる[^x00-x7F]=REGEXTEST(A2, "[^x00-x7F]")
スペース(半角・全角)が含まれる[s ]=REGEXTEST(A2, "[s ]")
URLらしい文字列https?://[w/:%#$&?()~.=+-]+=REGEXTEST(A2, "https?://")

TIP

パターンをセルに入力して参照する方法もあります。=REGEXTEST(A2, B2) のように第2引数にパターンが入ったセルを渡せるので、複数チェック条件を切り替えながら試したいときに便利です。

数値・金額のチェックに使えるパターン

チェック内容正規表現パターンメモ
整数(符号なし)^d+$「123」はTRUE、「1.5」はFALSE
小数点あり数値^d+(.d+)?$「12.5」もTRUEになる
符号付き整数^[+-]?d+$「-100」「+50」もTRUE
カンマ区切り金額^d{1,3}(,d{3})*$「1,234,567」にマッチ

FILTER関数との組み合わせ:一致行を一括抽出する

REGEXTEST関数はTRUE/FALSEを返すため、FILTER関数の条件(第2引数)にそのまま使えます。これが特に便利です。

基本:特定パターンの行だけ抽出する

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

A列が「東京」で始まる行(東京都・東京支店・東京本社など)をすべて抽出します。FILTER関数はスピルに対応しているので、結果が複数行あっても自動で展開されます。

応用:メールアドレスの不正データを抽出する

チェック対象の列でFALSEになった行(=不正データ)を抽出したいときは、条件を否定(NOT)します。

=FILTER(A2:B100, NOT(REGEXTEST(A2:A100, "^[w.+-]+@[w-]+.[w.-]+$")))

NOT() でREGEXTESTの結果を反転させることで、「メールアドレス形式でない行」を一覧できます。大量のリストを一発でクレンジングするのに役立ちます。

応用:複数パターンのいずれかに一致する行を抽出する

|(または)」を使えば、複数のキーワードを含む行を一度に絞り込めます。

=FILTER(A2:D100, REGEXTEST(B2:B100, "未払い|延滞|督促"))

B列(備考欄など)に「未払い」「延滞」「督促」のいずれかが含まれる行を抽出します。ステータス管理や案件仕分けに使えますよ。

注意:FILTERと組み合わせるときは範囲のサイズを揃える

REGEXTEST の第1引数(範囲)と FILTER の第1引数(範囲)は、行数を必ず一致させます。ずれていると #VALUE! エラーになります。

' 正しい例(どちらも2〜100行目)
=FILTER(A2:C100, REGEXTEST(A2:A100, "d"))

' 誤った例(FILTERは2〜100行目、REGEXTESTは2〜50行目でずれている)
=FILTER(A2:C100, REGEXTEST(A2:A50, "d"))

関連記事

REGEXTEST関数と組み合わせて使える関数や、関連するパターンチェックの記事もあわせてご覧ください。

まとめ

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

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

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

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

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