You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用LINQ实现带特定前导零规则的IP地址有效性判断

实现方案

你需要的前导零校验逻辑可以直接通过LINQ的字符串操作实现,完整代码如下:

public static bool is_valid_IP(String ip) {
    try {
        return ip.Split('.') is var segments 
               && segments.Length == 4
               && segments.All(x => 
                   Convert.ToInt32(x) is >=0 and <=255
                   && (x.Length == 1 || (x.Length == 3 && x.All(c => c == '0')))
               );
    } catch(Exception) {
        return false;
    }
}

注:如果使用低于C# 9的版本,可将Convert.ToInt32(x) is >=0 and <=255替换为Convert.ToInt32(x) >=0 && Convert.ToInt32(x) <=255即可。


逻辑说明

  1. 先把IP按.拆分为分段数组,首先校验拆分后的分段数必须刚好为4
  2. 用All方法校验所有分段同时满足以下规则:
    • 转换为整数后取值范围在0~255之间
    • 要么分段长度为1,不存在前导零问题
    • 要么分段长度刚好为3且所有字符都是0,即仅允许000这种特殊前导零情况
  3. 外层try catch会捕获非数字字符、空分段等转换异常,直接返回false,符合合法性校验要求

测试用例匹配验证

  • 0:长度为1,返回true
  • 000:长度3且全为0,返回true
  • 01:长度为2且存在前导零,返回false
  • 001:长度3但非全0,返回false
  • 20:长度2且无前置零,返回true

内容的提问来源于stack exchange,提问作者SolarOsQuiere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:15:00