【C#】文字列の正規表現チェックを簡単に!基本から応用まで解説!

スポンサーリンク

プログラムで文字列を処理するとき、特定のパターンに一致するかどうかを確認したい場面はよくあります。例えば、ユーザーが入力したメールアドレスが正しい形式かどうか、電話番号が決められたルールに従っているかなどです。

C#では、正規表現をつかうことで、こうした文字列のパターンチェックを簡単に行うことができます。正規表現を使うと、複雑なルールでもシンプルなコードで実装できるため、フォーム入力のバリデーションやデータ抽出、文字列の置換処理など、さまざまな場面で活用されています。

この記事では、C#で正規表現を使って文字列をチェックする基本的な方法から、実用的な応用例までをわかりやすく解説していきます。正規表現に馴染みのない方でも理解しやすいように、具体的なコード例を交えながら説明するので、ぜひ最後まで読んでみてください!

C#で正規表現を使う基本

C#で正規表現を扱うには、System.Text.RegularExpressions という名前空間を使用します。この名前空間には、正規表現を利用するためのRegexクラスが含まれており、文字列のパターンマッチングを簡単に実装できます。

基本的な正規表現チェック(Regex.IsMatch)

最もシンプルな方法は、Regex.IsMatch() メソッドを使う方法です。このメソッドは、指定した文字列が正規表現パターンに一致するかどうかを true または false で返します。

例:メールアドレスの形式チェック

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string email = "test@example.com";
        string pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$";

        bool isValid = Regex.IsMatch(email, pattern);

        Console.WriteLine(isValid ? "有効なメールアドレスです。" : "無効なメールアドレスです。");
    }
}

ポイント

  • Regex.IsMatch(email, pattern) を使うことで、文字列 emailpattern に一致するかを判定できます。
  • pattern は、メールアドレスの形式を表す正規表現です。

このように、Regex.IsMatch() を活用すれば、入力値が特定のルールに従っているかを簡単にチェックできます。
次に、文字列の部分一致や抽出方法について詳しく見ていきましょう。

正規表現を使った文字列の部分一致・抽出

正規表現を使うと、文字列の一部が特定のパターンに一致するかどうかを調べたり、一致する部分を抽出したりすることができます。C#では、Regex.Match()Regex.Matches() を使用することで、簡単に部分一致や複数の一致を取得できます。

Regex.IsMatch() を使った部分一致の取得

Regex.Match() メソッドを使って、文字列の中から最初に一致した部分を取得していきます。

例:日付のフォーマット(YYYY-MM-DD)を抽出する

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string text = "今日の日付は 2025-03-17 です。";
        string pattern = @"\d{4}-\d{2}-\d{2}";

        Match match = Regex.Match(text, pattern);

        if (match.Success)
        {
            Console.WriteLine("見つかった日付: " + match.Value);
            /*
             実行結果:
             見つかった日付: 2025-03-17
            */
        }
        else
        {
            Console.WriteLine("日付は見つかりませんでした。");
        }
    }
}

ポイント

  • Regex.Match(text, pattern) を使うと、text 内で pattern に一致する最初の部分を取得できます。
  • \d{4}-\d{2}-\d{2} は「4桁の数字-2桁の数字-2桁の数字」(YYYY-MM-DD)の形式に一致する正規表現です。
  • match.Value を使って、一致した文字列を取得できます。

Regex.Matches() を使った複数一致の取得

Regex.Matches() メソッドを使うと、文字列内のすべての一致する部分をリストとして取得できます。

例:文章の中からすべてのURLを抽出する

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string text = "公式サイト: https://example.com、ブログ: http://blog.example.com";
        string pattern = @"https?://[a-zA-Z0-9.-]+(?:\.[a-zA-Z]{2,})+";

        MatchCollection matches = Regex.Matches(text, pattern);

        foreach (Match match in matches)
        {
            Console.WriteLine("見つかったURL: " + match.Value);
        }
    }
}
/*
 実行結果:
 見つかったURL: https://example.com
 見つかったURL: http://blog.example.com
*/

ポイント

  • Regex.Matches(text, pattern) を使うと、text 内で pattern に一致するすべての部分を MatchCollection として取得できます。
  • https?://[a-zA-Z0-9.-]+(?:\.[a-zA-Z]{2,})+ は、http:// または https:// から始まるURLに一致する正規表現です。
  • foreach ループを使って、一致したすべてのURLを取得・表示しています。

このように、Regex.Match() を使えば最初の一致を、Regex.Matches() を使えばすべての一致を取得できます。

よくある正規表現のパターン集

C#で正規表現を活用する際に、よく使われるパターンをいくつか紹介します。これらを覚えておくと、文字列のバリデーションやデータ抽出が効率的に行えます。

メールアドレスのチェック

ユーザーが入力したメールアドレスが正しい形式かどうかを確認します。

string pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$";
入力値マッチ結果
test@example.com✅ 有効
user.name@domain.co.jp✅ 有効
invalid-email❌ 無効

電話番号のフォーマットチェック

日本の電話番号(ハイフン区切り)をチェックします。

string pattern = @"^\d{2,4}-\d{2,4}-\d{4}$";
入力値マッチ結果
03-1234-5678✅ 有効
090-1234-5678✅ 有効
123456789❌ 無効

郵便番号のチェック

郵便番号(123-4567 の形式)をチェックします。

string pattern = @"^\d{3}-\d{4}$";
入力値マッチ結果
123-4567✅ 有効
12-34567❌ 無効

ひらがな・カタカナ・英数字のみ許可

フォーム入力で「ひらがな」「カタカナ」「英数字」のみを許可する場合に使います。

ひらがなのみ許可

string pattern = @"^[\p{IsHiragana}]+$";

カタカナのみ許可

string pattern = @"^[\p{IsKatakana}]+$";

英数字のみ許可

string pattern = @"^[a-zA-Z0-9]+$";

URLの抽出

文章内からURLを見つけ出すためのパターンです。

string pattern = @"https?://[a-zA-Z0-9.-]+(?:\.[a-zA-Z]{2,})+";
入力値マッチ結果
https://example.com✅ 有効
http://blog.example.com✅ 有効
www.example.com❌ 無効

まとめ

この記事では、C#で正規表現を使って文字列のパターンチェックを行う方法を解説しました。正規表現をマスターすれば、データの検証や解析がより強力になります。ぜひ、実際のプログラムで活用してみてください!

C#
スポンサーリンク
なんくるをフォローする

コメント

タイトルとURLをコピーしました