我知道正则表达式是dangerous,用于验证IP地址,因为IP地址可以采用不同的形式.

对于C和C++,我看到了类似的问题,这些问题用C inet_ntop()中不存在的函数来解决.

这个NET解决方案只处理标准的"ddd.ddd.ddd.ddd"表单.有什么建议吗?

推荐答案

你可以用这个来try 解析它:

 IPAddress.TryParse

然后判断AddressFamily哪个

返回系统.网插座.我的家人.IPv4或系统的互联网络.网插座.我的家人.用于IPv6的InterNetworkV6.

编辑:一些示例代码.根据需要更改:

    string input = "your IP address goes here";

    IPAddress address;
    if (IPAddress.TryParse(input, out address))
    {
        switch (address.AddressFamily)
        {
            case System.Net.Sockets.AddressFamily.InterNetwork:
                // we have IPv4
                break;
            case System.Net.Sockets.AddressFamily.InterNetworkV6:
                // we have IPv6
                break;
            default:
                // umm... yeah... I'm going to need to take your red packet and...
                break;
        }
    }

.net相关问答推荐

节省用户在整个应用程序中使用的Flutter

无法在 Blazor Server 应用程序中触发 InputRadio 的 onchange 事件

无法通过构建目标访问 dotnet 的环境变量

.NET 4.5 项目未在 Visual Studio 2022 中编译

如何在 C# 中自动删除临时文件?

判断内部异常的最佳方法?

如何调试 .NET 运行时中的内部错误?

从 byte[] 创建 zip 文件

为什么 .NET 中没有可序列化 XML 的字典?

图像与位图类

读取方法的属性值

为什么 LINQ .Where(predicate).First() 比 .First(predicate) 快?

使用 .NET 中的代码更改桌面墙纸

如何对 LINQ to XML 中的元素进行深层复制?

无法使用 Unity 将依赖项注入 ASP.NET Web API 控制器

Linq to SQL - 返回前 n 行

如何在 WPF 中的 Xaml 文件中添加注释?

C# (.NET) 设计缺陷

在 .NET Core 中在 MVC 之外使用 Razor

对构造函数进行单元测试重要吗?