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

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

確認環境
・Microsoft Visual Studio Community 2017

目次

仕様 IsMatchメソッド
正規表現 文字列を検索する
  文字をORで検索する
  文字を否定で検索する
  文字を範囲で指定して検索する
  先頭の文字列を検索する
  文字列の最後尾を検索する
  連続する文字を指定して検索する
  連続する文字(個以上)を指定して検索する
  1回以上出現している文字を検索する
オプション 大文字小文字を無視する
パターン 1桁以上の半角数値のみかをチェックする
  1桁以上の半角数値または英字の小文字(a-f)のみかをチェックする
  郵便番号の桁数と数値のチェックする
一覧 正規表現の主なパターン
エラー RegularExpressionsが存在しないというエラーが出る場合

IsMatchメソッド

public static bool IsMatch (string input, string pattern);

文字列を検索する

文字列を検索するサンプルです。

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」があるかを指定しています。
10行目はtrueに、12行目はfalseになります

文字をORで検索する

文字を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」があるかを指定しています。
10,12行目はtrueに、14行目はfalseになります。

文字を否定で検索する

文字を否定で検索するサンプルです。

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」以外の文字があるか指定しています。
10,12行目は、「A」以外の文字があるのでtrueになります。
14行目は、「A」以外の文字がないのでfalseになります。

文字を範囲で指定して検索する

文字を範囲で指定して検索するサンプルです。

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」の文字があるか指定しています。
10,12行目は、指定の文字があるのでtrueになります。
14行目は、指定の文字がないのでfalseになります。

先頭の文字列を検索する

先頭の文字列を検索するサンプルです。

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」の文字があるか指定しています。
10行目は、指定の文字があるのでtrueになります。
12行目は、指定の文字がないので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」の文字があるか指定しています。
10行目は、指定の文字があるのでtrueになります。
12行目は、指定の文字がないのでfalseになります。

連続する文字を指定して検索する

連続する文字を指定して検索するサンプルです。

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回連続することを指定しています。
10,12行目は、指定の文字があるのでtrueになります。
14行目は、指定の文字がないのでfalseになります。

連続する文字(個以上)を指定して検索する

連続する文字(個以上)を指定して検索するサンプルです。

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回以上連続することを指定しています。
10,12行目は、指定の文字があるのでtrueになります。
14行目は、指定の文字がないのでfalseになります。

1回以上出現している文字を検索する

using System;
using System.Text.RegularExpressions;

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

        Console.WriteLine(Regex.IsMatch("accb", a));//True

        Console.WriteLine(Regex.IsMatch("acb", a));//True

        Console.WriteLine(Regex.IsMatch("ab", a));//False
    }
}

8行目は、正規表現で「c」が1回以上出現していることを指定しています。
10,12行目は、指定の文字があるのでtrueになります。
14行目は、指定の文字がないのでfalseになります。

大文字小文字を無視する

大文字小文字を無視するサンプルです。

using System;
using System.Text.RegularExpressions;

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

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

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

8行目は、小文字の「c」を指定しています。
10行目は、IsMatchメソッドの3つめの引数にRegexOptions.IgnoreCaseを指定しています。大文字小文字を無視します。
12行目は、Trueが表示されます。

1桁以上の半角数値のみかをチェックする

1桁以上の半角数値のみかをチェックするサンプルです。

using System;
using System.Text.RegularExpressions;

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

        Console.WriteLine(Regex.IsMatch("123456", a));//True

        Console.WriteLine(Regex.IsMatch("123a", a));//False

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

8行目は、正規表現で1桁以上の半角数値のみであることを指定しています。
10行目は、指定の文字があるのでtrueになります。
12行目は、数値以外の文字があるのでfalseになります。
14行目は、数値がないのでfalseになります。

1桁以上の半角数値または英字の小文字(a-f)のみかをチェックする

1桁以上の半角数値または英字の小文字(a-f)のみかをチェックするサンプルです。

using System;
using System.Text.RegularExpressions;

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

        Console.WriteLine(Regex.IsMatch("123456abc", a));//True

        Console.WriteLine(Regex.IsMatch("123", a));//True

        Console.WriteLine(Regex.IsMatch("abc", a));//True

        Console.WriteLine(Regex.IsMatch("123A", a));//False
    }
}

8行目は、正規表現で1桁以上の半角数値または英字の小文字(a-f)のみかを指定しています。
10,12,14行目は、指定の文字があるのでtrueになります。
16行目は、英字の大文字があるのでfalseになります。

郵便番号の桁数と数値のチェックする

郵便番号の桁数と数値のチェックするサンプルです。

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行目は、正規表現で郵便番号の桁数と数値であることを指定しています。
10行目は、指定の文字列なのでtrueになります。
12,14行目は、指定の文字列ではないのでfalseになります。

正規表現の主なパターン

以下は、正規表現の主なパターンです。

パターン パターンの意味
ABD ABDという文字か。
[ABD] A or B or Dのどれか1文字が入っているか。
[^ABD] A と B と D以外の1文字が入っているか。否定です。
先頭の文字の正規表現と似ています。
[A-C] A or B or C のどれか1文字が入っているか。
A|B|D A or B or Dのどれか1文字が入っているか。
[a-zA-Z] 英字の小文字のaからzまたは大文字のAからZのどれか1文字が入っているか。
^A 先頭の文字はAか。
否定の正規表現と似ています。
A$ 最後尾の文字はAか。
* *の直前の文字が0回以上の繰り返し。
+ +の直前の文字が1回以上の繰り返し。
? ?の直前の文字が0回または1回の繰り返し。
{n} n回続いている。
{n,} n回以上続いている。
 . 任意の一文字を表す。
¥s 比較する文字に、空白1文字がある。
¥d 比較する文字に、数字1文字がある。 ([0-9]と同じ)
¥w 比較する文字に、小文字の英字 or 大文字の英字 or 数値 or アンダースコアの1文字がある。
[a-zA-Z0-9_]と同じ

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

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

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

 

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

関連の記事

C# 正規表現で一致した全ての文字列を返す(Matchesメソッド)
C# 正規表現で一致した最初の文字列を返す(Matchメソッド)
C# 文字列を分割して配列にするサンプル(Split)
C# 文字列を置き換えるサンプル(Replace)

△上に戻る