正規表現で文字列がURLの形式になっているか確認

正規表現を利用して文字列がURLの形式になっているか確認する。

正規表現で指定の文字列がURLの形式(http://~) or (https://~)になっているかを確認します。

VBAで正規表現を利用するにはRegExpオブジェクトを利用します。
サンプルコードではRegExpオブジェクトのTestメソッドを利用してケース1、2がURL形式、3~5がURL形式ではない文字列をそれぞれ確認し、その結果を返しています。

また、ftpの形式(ftp://サーバ名.comなど)も確認したい場合はサンプルコードのrunRegExpURLの「URL形式の正規表現」の個所を
“^https?:\/\/([A-Z0-9][A-Z0-9_-](?:.[A-Z0-9][A-Z0-9_-])+):?(\d+)?\/?/”
から
“^(https?|ftp):\/\/([A-Z0-9][A-Z0-9_-](?:.[A-Z0-9][A-Z0-9_-])+):?(\d+)?\/?/”
に変更すればftpの形式でも確認ができます。

'******************************************************************
' 文字列がURLの形式になっているか確認
'******************************************************************
Sub Main_ChkURL()
    
    Dim sChkURL As String
    
    'ケース1(OK)
    sChkURL = "http://aabbccc.com/contents321"
    Debug.Print "「" & sChkURL & "」は" & runRegExpURL(sChkURL)
    
    'ケース2(OK)
    sChkURL = "https://www.yahoo.co.jp/"
    Debug.Print "「" & sChkURL & "」は" & runRegExpURL(sChkURL)
    
    'ケース3(NG://がない)
    sChkURL = "https:sss.co.jp"
    Debug.Print "「" & sChkURL & "」は" & runRegExpURL(sChkURL)
    
    'ケース4(NG:httpが全角文字)
    sChkURL = "Http://google.com"
    Debug.Print "「" & sChkURL & "」は" & runRegExpURL(sChkURL)
    
    'ケース5(NG:ftpになっている)
    sChkURL = "ftp://www.yahoo.co.jp/"
    Debug.Print "「" & sChkURL & "」は" & runRegExpURL(sChkURL)

End Sub

'******************************************************************
' 正規表現で値がURLの形式かチェック
'------------------------------------------------------------------
'  第1引数:検査対象の文字列
'------------------------------------------------------------------
'  戻り値 :確認結果の文字列
'******************************************************************
Function runRegExpURL(getVal As Variant) As String
    
    'URL形式の正規表現
    Dim sPattern As String
    sPattern = "^https?:\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/"

    Dim oReg As Object
    Set oReg = CreateObject("VBScript.RegExp")
    oReg.Pattern = sPattern  '検索するパターンを設定
    oReg.IgnoreCase = True   '大文字と小文字を区別(True:しない、Flase:する)
    oReg.Global = True       '文字列全体を検索(True:する、Flase:しない)

    If oReg.Test(getVal) Then
        runRegExpURL = "URLの形式です"
    Else
        runRegExpURL = "URLの形式ではありません"
    End If
    
    Set oReg = Nothing

End Function

 ■実行結果