VB.NET 正規表現で真偽値を返す(IsMatchメソッド)

VB.NETの正規表現で真偽値を返すサンプルです。IsMatchメソッドを使用します。

目次

メソッド IsMatchメソッド
AB 文字列を指定
[AB] 文字をORで指定
[^A] 文字を否定で指定
[A-C] 文字を範囲で指定
^A 先頭の文字列を指定
A$ 末尾の文字列を指定
c{2} 連続する文字を指定
[0-9]{1,} 数値1桁以上を指定
^[0-9]{5}$ 5桁の半角数値を指定
^[0-9a-f]{5}$ 5桁の半角数値または英字の小文字(a-f)を指定
^[0-9]{3}-[0-9]{4}$ 郵便番号を指定(数値3桁とハイフンと数値4桁)
エスケープ ドット(.)を文字として指定(エスケープ)
  大文字小文字を無視する(RegexOptions.IgnoreCase)

IsMatchメソッド

public static bool IsMatch (string 文字列, string 正規表現のパターン);
  • Regexクラスのメソッドです。
  • 1つめの引数は、対象の文字列を指定します。
  • 2つめの引数は、正規表現のパターンを指定します。
  • 一致した場合、trueを返します。
  • 一致しなかった場合、falseを返します。

文字列を指定

Imports System.Text.RegularExpressions

Module Module1
    Sub Main()
        Dim a As String = "BC"

        Console.WriteLine(Regex.IsMatch("ABC", a)) 'True
        Console.WriteLine(Regex.IsMatch("ACB", a)) 'False
    End Sub
End Module

5行目は、文字列「BC」を指定しています。

文字をORで指定

Imports System.Text.RegularExpressions

Module Module1
    Sub Main()
        Dim a As String = "[AB]"

        Console.WriteLine(Regex.IsMatch("ABC", a)) 'True
        Console.WriteLine(Regex.IsMatch("ZZB", a)) 'True
        Console.WriteLine(Regex.IsMatch("ZZZ", a)) 'False
    End Sub
End Module

5行目は、「A」または「B」を指定しています。

文字を否定で指定

Imports System.Text.RegularExpressions

Module Module1
    Sub Main()
        Dim a As String = "[^A]"

        Console.WriteLine(Regex.IsMatch("ZZZ", a)) 'True
        Console.WriteLine(Regex.IsMatch("ZAA", a)) 'True
        Console.WriteLine(Regex.IsMatch("AAA", a)) 'False
    End Sub
End Module

5行目は、「A」以外の文字を指定しています。

文字を範囲で指定

Imports System.Text.RegularExpressions

Module Module1
    Sub Main()
        Dim a As String = "[A-C]"

        Console.WriteLine(Regex.IsMatch("ABC", a)) 'True
        Console.WriteLine(Regex.IsMatch("ZZC", a)) 'True
        Console.WriteLine(Regex.IsMatch("ZZZ", a)) 'False
    End Sub
End Module

5行目は、「A」または「B」または「C」の文字を指定しています。

先頭の文字列を指定

Imports System.Text.RegularExpressions

Module Module1
    Sub Main()
        Dim a As String = "^AB"

        Console.WriteLine(Regex.IsMatch("ABC", a)) 'True
        Console.WriteLine(Regex.IsMatch("ACB", a)) 'False
    End Sub
End Module

5行目は、先頭が「AB」の文字を指定しています。

末尾の文字列を指定

Imports System.Text.RegularExpressions

Module Module1
    Sub Main()
        Dim a As String = "BC$"

        Console.WriteLine(Regex.IsMatch("ABC", a)) 'True
        Console.WriteLine(Regex.IsMatch("ACB", a)) 'False
    End Sub
End Module

5行目は、末尾が「BC」の文字を指定しています。

連続する文字を指定

Imports System.Text.RegularExpressions

Module Module1
    Sub Main()
        Dim a As String = "c{2}"

        Console.WriteLine(Regex.IsMatch("acccb", a)) 'True
        Console.WriteLine(Regex.IsMatch("accb", a)) 'True
        Console.WriteLine(Regex.IsMatch("acbc", a)) 'False
    End Sub
End Module

5行目は、「c」が2回連続する文字を指定しています。

数値1桁以上を指定

Imports System.Text.RegularExpressions

Module Module1
	Sub Main()
		Dim ptr As String = "[0-9]{1,}-"
		'Dim ptr As String = "\d{1,}-"

		Console.WriteLine(Regex.IsMatch("1-", ptr)) 'True
		Console.WriteLine(Regex.IsMatch("123-", ptr)) 'True
		Console.WriteLine(Regex.IsMatch("ab1-", ptr)) 'True
		Console.WriteLine(Regex.IsMatch("a1b-", ptr)) 'False
	End Sub
End Module

5行目は、数値1桁以上とハイフン(-)を指定しています。
6行目は、5行目と同じ意味です。\dは、数値を意味します。

5桁の半角数値を指定

Imports System.Text.RegularExpressions

Module Module1
	Sub Main()
		Dim a As String = "^[0-9]{5}$"

		Console.WriteLine(Regex.IsMatch("12345", a)) 'True
		Console.WriteLine(Regex.IsMatch("123", a)) 'False 桁数不足
		Console.WriteLine(Regex.IsMatch("a2345", a)) 'False 文字あり
	End Sub
End Module

5行目は、5桁の半角数値を指定しています。

5桁の半角数値または英字の小文字(a-f)を指定

Imports System.Text.RegularExpressions

Module Module1
	Sub Main()
		Dim a As String = "^[0-9a-f]{5}$"

		Console.WriteLine(Regex.IsMatch("1a23b", a)) 'True
		Console.WriteLine(Regex.IsMatch("a1bc", a)) 'False 桁数不足
		Console.WriteLine(Regex.IsMatch("12345", a)) 'True 数値のみ
		Console.WriteLine(Regex.IsMatch("abcde", a)) 'True 英字のみ
	End Sub
End Module

5行目は、5桁の半角数値または英字の小文字(a-f)を指定しています。

郵便番号を指定(数値3桁とハイフンと数値4桁)

Imports System.Text.RegularExpressions

Module Module1
	Sub Main()
		Dim a As String = "^[0-9]{3}-[0-9]{4}$"
		'Dim a As String = "^\d{3}-\d{4}$"

		Console.WriteLine(Regex.IsMatch("123-4567", a)) 'True
		Console.WriteLine(Regex.IsMatch("1234567", a)) 'False
		Console.WriteLine(Regex.IsMatch("1234-567", a)) 'False
	End Sub
End Module

5行目は、郵便番号(数値3桁とハイフンと数値4桁)を指定しています。
6行目も同じ意味です。\dは、数値を意味します。

ドット(.)を文字として指定(エスケープ)

Imports System.Text.RegularExpressions

Module Module1
	Sub Main()
		Dim ptr As String = "a\."

		Console.WriteLine(Regex.IsMatch("a.", ptr)) 'True
		Console.WriteLine(Regex.IsMatch("aa", ptr)) 'False
	End Sub
End Module

5行目は、ドット(.)を文字として扱います。「a.」を指定しています。
エスケープとしてバックスラッシュ(ユニコードのU+005C)を前につけます。環境によっては円マークで表示されます。
ドット(.)にエスケープをつけない場合は任意の一文字という意味になります。

大文字小文字を無視する(RegexOptions.IgnoreCase)

Imports System.Text.RegularExpressions

Module Module1
    Sub Main()
        Dim a As String = "c"

        Dim b As Boolean = Regex.IsMatch("ABC", a, RegexOptions.IgnoreCase)

        Console.WriteLine(b) 'True
    End Sub
End Module

7行目は、IsMatchメソッドの3つめの引数にRegexOptions.IgnoreCaseを指定しています。大文字小文字を無視します。

以下はMicrosoftのIsMatch(String, String)のリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.text.regularexpressions.regex.ismatch?view=netframework-4.8#System_Text_RegularExpressions_Regex_IsMatch_System_String_System_String_

関連の記事

VB.NET 文字列を操作するサンプル

△上に戻る