- PR -

bool IsIPAddress(string s)を実装するには?

1
投票結果総投票数:13
正規表現 6 46.15%
1文字づつ調べる 1 7.69%
実際に接続して繋がらなかったら false を返す 0 0.00%
後輩のデスクに「これ、作っとい 6 46.15%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2003-12-09 18:23
Java Solution 会議室のトピックですが、.NETではどうでしょう?
私はこんなのかな。(たたき台として下さい)
コード:
public static bool IsIPAddress(string s)
{
    return Regex.IsMatch(s,"^\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.\\\\d+$");
}


標準であったりして。
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2003-12-09 18:25
バックスラッシュが増えてるし、解答欄が変だ。プレビューはちゃんと出てたのに。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-10 08:32
「後輩に『作っとけ』」しかないっしょ(笑)

いや、本当、大変なんですよ。例えば、予約済み番号の扱いをどうするか、とか、例で上げられているのだと「999.999.999.999」も通っちゃいますよね。「つながったらOk」だと“つないでないといけない”し。

・・・と、隣の人に指摘した!!(隣の人って、catsさんじゃないですよ、念のため)
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-12-10 09:52
こんなのどうでしょう?

コード:
public static bool IsIPAddress(string s)
{
    if(Regex.IsMatch(s, "^[0-2]?[0-9]?[0-9]+\\.[0-2]?[0-9]?[0-9]+\\.[0-2]?[0-9]?[0-9]+\\.[0-2]?[0-9]?[0-9]+$"))
    {
        string[] ip = s.Split(".".ToCharArray());

        if(ip.Length.Equals(4)
        && int.Parse(ip[0]) <= byte.MaxValue
        && int.Parse(ip[1]) <= byte.MaxValue
        && int.Parse(ip[2]) <= byte.MaxValue
        && int.Parse(ip[3]) <= byte.MaxValue)
        {
            return true;
        }
    }
    return false;
}


Lyn
会議室デビュー日: 2002/07/05
投稿数: 4
投稿日時: 2003-12-10 10:32
System.Net.IPAdressってのを使うのは無し?
ピリオド区切りか、コロン区切りかでIPv4とIPv6に対応できるみたいだし。

コード:
public static bool IsIPAddress(string s)
{
    try
    {
        System.Net.IPAddress ipaddr = System.Net.IPAddress.Parse(s);
        // 例外でないから OK
        return true;
    }
    catch(Exception exc)
    {
        System.Diagnostics.Debug.WriteLine(exc.Message);
        return false;
    }
}

1

スキルアップ/キャリアアップ(JOB@IT)