0

私はテキストボックスを持っていて、それが取る必要がある唯一の入力は、単一のIPアドレスまたは次の形式の範囲のいずれかです。10.2.3.4-10

私はこれまでにこれを持っています:

string txt = "10.13.11.12-100";

        string re1 = "((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))(?![\\d])";   // IPv4 IP Address 1
        string re2 = ".*?"; // Non-greedy match on filler
        string re3 = @"\b([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\b";//"([0-255])";   // Integer Number 1

        Regex r = new Regex(re1 + re2 + re3, RegexOptions.IgnoreCase | RegexOptions.Singleline);
        Regex r2 = new Regex(re1, RegexOptions.IgnoreCase | RegexOptions.Singleline);
        Match m = r.Match(txt);
        Match m3 = r2.Match(txt);
        if (m.Success || m3.Success)
        {...}

唯一のことはそれです。私が持っている場合100.100.11.11-256でも、上記でtrueと一致するため、trueが返さm3.Successれます。

それを修正する方法は?

4

1 に答える 1

-1

IP 範囲正規表現の場合:

^10.2.3.(?:[4-9]|10)$

単一の IP アドレスの場合: DNS ホスト名または IP アドレスに一致する正規表現?

于 2013-01-09T01:18:29.983 に答える