C# 正規表現で真偽値を返す(IsMatchメソッド)

C#の正規表現で真偽値を返すサンプルです。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)
エラー RegularExpressionsが存在しないというエラーが出る場合

IsMatchメソッド

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

文字列を指定

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "BC";

        Console.WriteLine(Regex.IsMatch("ABC", a)); //True
        Console.WriteLine(Regex.IsMatch("ACB", a)); //False
    }
}

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

文字をORで指定

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "[AB]";

        Console.WriteLine(Regex.IsMatch("ABC", a)); //True
        Console.WriteLine(Regex.IsMatch("ZZB", a)); //True
        Console.WriteLine(Regex.IsMatch("ZZZ", a)); //False
    }
}

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

文字を否定で指定

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "[^A]";

        Console.WriteLine(Regex.IsMatch("ZZZ", a)); //True
        Console.WriteLine(Regex.IsMatch("ZAA", a)); //True
        Console.WriteLine(Regex.IsMatch("AAA", a)); //False
    }
}

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

文字を範囲で指定

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "[A-C]";

        Console.WriteLine(Regex.IsMatch("ABC", a)); //True
        Console.WriteLine(Regex.IsMatch("ZZC", a)); //True
        Console.WriteLine(Regex.IsMatch("ZZZ", a)); //False
    }
}

8行目は、「A」または「B」または「C」の文字があるか指定しています。

先頭の文字列を指定

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "^AB";

        Console.WriteLine(Regex.IsMatch("ABC", a)); //True
        Console.WriteLine(Regex.IsMatch("ACB", a)); //False
    }
}

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

末尾の文字列を指定

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "BC$";

        Console.WriteLine(Regex.IsMatch("ABC", a)); //True
        Console.WriteLine(Regex.IsMatch("ACB", a)); //False
    }
}

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

連続する文字を指定

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string a = "c{2}";

        Console.WriteLine(Regex.IsMatch("acccb", a)); //True
        Console.WriteLine(Regex.IsMatch("accb", a)); //True
        Console.WriteLine(Regex.IsMatch("acbc", a)); //False
    }
}

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

数値1桁以上を指定

using System;
using System.Text.RegularExpressions;

class Test1
{
	static void Main()
	{
		string a = "[0-9]{1,}-";

		Console.WriteLine(Regex.IsMatch("1-", a));//True
		Console.WriteLine(Regex.IsMatch("123-", a));//True
		Console.WriteLine(Regex.IsMatch("ab1-", a));//True
		Console.WriteLine(Regex.IsMatch("a1b-", a));//False
	}
}

8行目は、数値1桁以上とハイフン(-)を指定しています。

5桁の半角数値を指定

using System;
using System.Text.RegularExpressions;

class Test1
{
	static void Main()
	{
		string a = "^[0-9]{5}$";

		Console.WriteLine(Regex.IsMatch("12345", a));//True
		Console.WriteLine(Regex.IsMatch("123", a));//False 桁数不足
		Console.WriteLine(Regex.IsMatch("a2345", a));//False 文字あり
	}
}

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

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

using System;
using System.Text.RegularExpressions;

class Test1
{
	static void Main()
	{
		string a = "^[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 英字のみ
	}
}

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

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

using System;
using System.Text.RegularExpressions;

class Test1
{
	static void Main()
	{
		string a = "^[0-9]{3}-[0-9]{4}$";

		Console.WriteLine(Regex.IsMatch("123-4567", a));//True
		Console.WriteLine(Regex.IsMatch("1234567", a));//False
		Console.WriteLine(Regex.IsMatch("1234-567", a));//False
	}
}

8行目は、郵便番号(数値3桁とハイフンと数値4桁)を指定しています。

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

using System;
using System.Text.RegularExpressions;

class Test1
{
	static void Main()
	{
		string ptr = Regex.Escape("a.");

		Console.WriteLine(Regex.IsMatch("a.", ptr));//True
		Console.WriteLine(Regex.IsMatch("aa", ptr));//False
	}
}

8行目は、Escapeメソッドで、ドット(.)を文字として扱います。「a.」を指定しています。
ドット(.)にエスケープをつけない場合は任意の一文字という意味になります。

Escapeメソッドは、文字 (\、*、+、?、|、{、[、(、)、^、$、.、#、空白) をエスケープします。

https://docs.microsoft.com/ja-jp/dotnet/api/system.text.regularexpressions.regex.escape?view=netcore-3.1

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

using System;
using System.Text.RegularExpressions;

class Test1
{
    static void Main()
    {
        string ptr = "c";

        bool b = Regex.IsMatch("ABC", ptr, RegexOptions.IgnoreCase);

        Console.WriteLine(b); //True
    }
}

10行目は、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_

RegularExpressionsが存在しないというエラーが出る場合

「型または名前空間の名前'RegularExpressions'が名前空間'System.Text'に存在しません。」を解消する手順です。

1.ソリューションエクスプローラーの「参照」→「参照の追加」をクリックします。

 

2.「System」にチェックを入れてOKを押すとエラーが消えます。

関連の記事

C# 正規表現で複数の値を返す(Matchesメソッド)
C# 正規表現で最初の文字列を返す(Matchメソッド)

△上に戻る