检查用户是否已正确输入IP地址

Boa*_*rdy 6 c# validation

我目前正在开发一个C#项目,我需要验证用户输入文本框的文本.

其中一项验证是检查以确保已正确输入IP地址.

我将如何进行IP地址验证.

感谢您的任何帮助,您可以提供.

Bry*_*her 6

您可以使用IPAddress.Parse方法.NET Framework 1.1.或者,如果您使用的是.NET 4.0,请参阅IPAddress文档.TryParse方法.NET Framework 4.

此方法确定字符串的内容是否表示有效的IP地址.在.NET 1.1中,返回值是IP地址.在.NET 4.0中,返回值表示成功/失败,并且在作为out方法调用中的参数传递的IPAddress中返回IP地址.

编辑:好吧我会为赏金玩游戏:)这是一个示例实现作为扩展方法,需要C#3+和.NET 4.0:

using System;
using System.Net;
using System.Text.RegularExpressions;

namespace IPValidator
{
    class Program
    {
        static void Main (string[] args)
        {
            Action<string> TestIP = (ip) => Console.Out.WriteLine (ip + " is valid? " + ip.IsValidIP ());

            TestIP ("99");
            TestIP ("99.99.99.99");
            TestIP ("255.255.255.256");
            TestIP ("abc");
            TestIP ("192.168.1.1");
        }

    }

    internal static class IpExtensions
    {
        public static bool IsValidIP (this string address)
        {
            if (!Regex.IsMatch (address, @"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b"))
                return false;

            IPAddress dummy;
            return IPAddress.TryParse (address, out dummy);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 对,他们是.Dotted-quad表示法是一种更易于阅读的原始32位数字形式,它最终是IP地址.试试`ping 134744072`. (2认同)

小智 5

您似乎只关心验证XXXX格式的IPv4 IP地址字符串.如果是这样,这段代码就可以直接执行该任务:

string ip = "127.0.0.1";
string[] parts = ip.Split('.');
if (parts.Length < 4)
{
    // not a IPv4 string in X.X.X.X format
}
else
{
    foreach(string part in parts)
    {
        byte checkPart = 0;
        if (!byte.TryParse(part, out checkPart))
        {
            // not a valid IPv4 string in X.X.X.X format
        }
    }
    // it is a valid IPv4 string in X.X.X.X format
}
Run Code Online (Sandbox Code Playgroud)