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

求助:如何用JavaScript正则表达式验证IPv4地址的0-255范围

搞定IPv4地址的正则验证:新手友好指南

嘿,作为正则新手,卡在IPv4的范围匹配完全正常——这部分确实有点绕,我来给你拆解得明明白白!

首先,咱们先明确IPv4每个八位组的核心规则:

  • 必须是0到255之间的整数
  • 不能有前导零(除非这个八位组就是0本身,比如0.0.0.0合法,但01.2.3.4就不合法)

拆解单个八位组的正则匹配

单个合法的八位组可以分成5种情况,我们用|把它们组合起来:

  • 25[0-5]:匹配250-255(比如250、255)
  • 2[0-4]\d:匹配200-249(比如200、249)
  • 1\d{2}:匹配100-199(比如100、199)
  • [1-9]\d:匹配10-99(避免前导零,比如10、99,排除01、02这种)
  • \d:匹配0-9(单个数字,比如0、9)

把这些组合起来,单个八位组的匹配规则就是:
(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)

这里用(?:...)是非捕获组,只是用来分组,不会保存匹配结果,能提高正则的效率。

完整的IPv4正则表达式

IPv4是4个这样的八位组用英文句点分隔,所以我们把单个八位组的规则重复4次,中间用转义后的句点\.分隔(因为.在正则里是“任意字符”,必须转义),再加上^和$确保整个字符串完全匹配(避免出现“1.2.3.4.5”或者“a1.2.3.4”这种部分匹配的错误):

^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$

给新手的额外提示

  1. 测试验证:你可以拿这些例子测试:
    • 合法地址:1.2.3.4、123.45.67.89、0.0.0.0、255.255.255.255
    • 非法地址:256.0.0.1(超过255)、01.2.3.4(前导零)、1.2.3(不足4个八位组)、1.2.3.4.5(超过4个八位组)
  2. 代码里的用法:比如在Python中,你可以用re.fullmatch()方法来验证,它会自动检查整个字符串是否匹配,和正则里的^$效果一致:
    import re
    
    def is_valid_ipv4(ip):
        pattern = r'^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$'
        return re.fullmatch(pattern, ip) is not None
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:57:23