次の例で使用している正規表現"\d{1,3}(\.\d{1,3}){3}(/\d{1,2})?"は、IPアドレス(IPv4)となりうる文字列にマッチします。 この正規表現は、1~3桁の数字(\d{1,3})に続けて、ピリオドと1~3桁の数字の組み合わせが三回続き((\.\d{1,3}){3})、場合によってはスラッシュと1~2桁の数字が後続する((/\d{1,2})?)文字列にマッチします。

この正規表現では、IPアドレスとしては不正な値の文字列にもマッチします。 具体的には、\dを使っているため全角数字にもマッチする、\d{1,3}には999などのIPアドレスとしてはありえない数字にもマッチする、^を使っていないため文字列の途中でもマッチするなど、完全ではない点に注意してください。

正規表現を使って文字列がIPアドレスの形式となっている箇所を含むかどうか判定する
using System;
using System.Text.RegularExpressions;

class Sample {
  static void Main()
  {
    var words = new string[] {
      "0.0.0.0/8",
      "127.0.0.1",
      "192.168.1.1",
      "192.168.0.0/16",
      "255.255.255.255",
      "new IPAddress(\"192.168.1.1\")",
      "localhost",
      "192.168.000.000",
      "192.168.999.999",
      "192.168.999.999/99",
      "3.141593",
      "2010.11.11",
      "127.0.0.1",
      "192.168.0.10/24",
    };

    foreach (var word in words) {
      Console.Write("{0,-30} ", word);

      if (Regex.IsMatch(word, @"\d{1,3}(\.\d{1,3}){3}(/\d{1,2})?"))
        Console.WriteLine("O");
      else
        Console.WriteLine("X");
    }
  }
}
実行結果
0.0.0.0/8                      O
127.0.0.1                      O
192.168.1.1                    O
192.168.0.0/16                 O
255.255.255.255                O
new IPAddress("192.168.1.1")   O
localhost                      X
192.168.000.000                O
192.168.999.999                O
192.168.999.999/99             O
3.141593                       X
2010.11.11                     X
127.0.0.1                      O
192.168.0.10/24                O