正規表現を使用して電話番号の形式をチェックするための関数

タイトルのマクロは、以下です。

' 正規表現を使用して電話番号の形式をチェックするための関数
Private Function CheckTelWithRegExp(ByVal Tel As String) As Boolean
    '正規表現のためのオブジェクトを作成する
    With CreateObject("VBScript.RegExp")
        '文字列パターンを設定する
        .Pattern = "^0(\d{1}-\d{4}|\d{2}-\d{3}|\d{3}-\d{2}|\d{4}-\d{1})-\d{4}$"
        'パターンに該当するかテストして、戻り値を返す
        CheckTelWithRegExp = .Test(Tel)
    End With
End Function

このコードは、正規表現を使用して電話番号の形式をチェックするための関数を実装しています。

CheckTelWithRegExp関数の説明

  1. 関数の宣言:
    • CheckTelWithRegExpは、電話番号の形式をチェックし、真偽値(Boolean)を返す関数です。
    • 引数Telは、チェック対象の電話番号を表す文字列です。
  2. 正規表現オブジェクトの作成:
    • CreateObject("VBScript.RegExp")を使用して、正規表現オブジェクトを作成します。
    • Withステートメントを使用して、オブジェクトに対する操作をまとめて行います。
  3. パターンの設定:
    • .Patternプロパティを使用して、チェックするパターンを設定します。
    • パターンは"^0(\d{1}-\d{4}|\d{2}-\d{3}|\d{3}-\d{2}|\d{4}-\d{1})-\d{4}$"です。
    • このパターンは、日本の電話番号の形式に一致するものを表します。
      • ^0:電話番号は0で始まります。
      • (\d{1}-\d{4}|\d{2}-\d{3}|\d{3}-\d{2}|\d{4}-\d{1}):ハイフンで区切られた1桁から4桁の数字のグループが続きます。
      • \d{4}$:最後に4桁の数字が続きます。
  4. パターンのテスト:
    • .Test(Tel)メソッドを使用して、与えられた文字列Telがパターンに一致するかどうかをチェックします。
    • 一致する場合はTrue、一致しない場合はFalseを返します。

パターンの説明

^0(\d{1}-\d{4}|\d{2}-\d{3}|\d{3}-\d{2}|\d{4}-\d{1})-\d{4}$

  • ^:文字列の先頭を示します。
  • 0:電話番号は0で始まります。
  • (\d{1}-\d{4}|\d{2}-\d{3}|\d{3}-\d{2}|\d{4}-\d{1}):次の部分は以下の4つの形式のいずれかに一致します。
    • \d{1}-\d{4}:1桁の数字 + ハイフン + 4桁の数字
    • \d{2}-\d{3}:2桁の数字 + ハイフン + 3桁の数字
    • \d{3}-\d{2}:3桁の数字 + ハイフン + 2桁の数字
    • \d{4}-\d{1}:4桁の数字 + ハイフン + 1桁の数字
  • -\d{4}$:ハイフン + 4桁の数字 + 文字列の終わり

この関数は、電話番号が指定されたパターンに一致するかどうかをチェックし、一致する場合はTrue、一致しない場合はFalseを返します。

CheckTelWithRegExpSample サブルーチンの説明

このサブルーチンは、電話番号の形式が正しいかどうかをチェックするために CheckTelWithRegExp 関数を使用し、その結果をイミディエイトウィンドウに表示します。

'パターンに該当するかテストして、結果をイミディエイトウィンドウに表示する
Private Sub CheckTelWithRegExpSample()
    Debug.Print CheckTelWithRegExp("0-30000-0000")   ' False
    Debug.Print CheckTelWithRegExp("03-0000-0000")   ' True
    Debug.Print CheckTelWithRegExp("030-000-0000")   ' True
    Debug.Print CheckTelWithRegExp("0300-00-0000")   ' True
    Debug.Print CheckTelWithRegExp("03000-0-0000")   ' True
    Debug.Print CheckTelWithRegExp("03000-0-000")    ' False
    Debug.Print CheckTelWithRegExp("030000-0000")    ' False
End Sub

サブルーチンの動作

このサブルーチンは、CheckTelWithRegExp 関数を使用して、複数の電話番号が指定された正規表現パターンに一致するかどうかをチェックします。各電話番号のチェック結果をイミディエイトウィンドウに出力します。

これにより、正規表現パターンが正しく機能しているか、または検証される電話番号が期待される形式に一致しているかを確認することができます。

Follow me!