zoukankan      html  css  js  c++  java
  • ip正则

    IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
    IP地址的长度为32位(共有2^32个IP地址),分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开。

    IP地址格式

    IP地址的长度为32位(共有2^32个IP地址),分为4段,每段8位
    用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开。
    // 0.0.0.0 ~ 255.255.255.255
    

    根据规则:每段相同,范围都在 0 ~ 255
    0~255 对应的正则表达式为 (2(5[0-5]|[0-4]d))|[0-1]?d{1,2}

    下面简单介绍它的组成

    • 2(5[0-5]|[0-4]d) 匹配:200 ~ 255
    • [0-1]?d{1,2} 匹配:0 ~ 199

    使用

    • 提取一段内容中的所有IP地址
      ((2(5[0-5]|[0-4]d))|[0-1]?d{1,2})(.((2(5[0-5]|[0-4]d))|[0-1]?d{1,2})){3}
    • 判断字符串是否是IP地址
      ^((2(5[0-5]|[0-4]d))|[0-1]?d{1,2})(.((2(5[0-5]|[0-4]d))|[0-1]?d{1,2})){3}$

    下边是各种语言的程序代码

    js

    var pattern = /((2(5[0-5]|[0-4]d))|[0-1]?d{1,2})(.((2(5[0-5]|[0-4]d))|[0-1]?d{1,2})){3}/g,
        str = '';
    console.log(pattern.test(str));
    

    php

    $str = '';
    $isMatched = preg_match_all('/((2(5[0-5]|[0-4]d))|[0-1]?d{1,2})(.((2(5[0-5]|[0-4]d))|[0-1]?d{1,2})){3}/', $str, $matches);
    var_dump($isMatched, $matches);
    go
    package main
    
    import (
        "fmt"
        "regexp"
    )
    
    func main() {
        str := "test"
        matched, err := regexp.MatchString("((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}", str)
        fmt.Println(matched, err)
    }
    

    python

    import re
    pattern = re.compile(r'((2(5[0-5]|[0-4]d))|[0-1]?d{1,2})(.((2(5[0-5]|[0-4]d))|[0-1]?d{1,2})){3}')
    str = ''
    print(pattern.search(str))
    

    java

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class RegexMatches {
        
        public static void main(String args[]) {
            String str = "";
            String pattern = "((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}";
    
            Pattern r = Pattern.compile(pattern);
            Matcher m = r.matcher(str);
            System.out.println(m.matches());
        }
    
    }
    

    obj-c

    NSString *str = @"";
    NSString *pattern = @"((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}";
    NSError *error = NULL;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern: pattern options: nil error: &error];
    NSArray *match = [regex matchesInString: str options: NSMatchingCompleted range: NSMakeRange(0, [str length])];
    if (match.count != 0) {
        // ...
    }
    

      

  • 相关阅读:
    微信开放平台:OpenAPI、云开发与基础管理能力升级
    腾讯刘颖:从容器到低代码,腾讯云原生技术演进历程
    十年老站长心声:我为什么选择把 Hexo 网站迁移到 Webify
    腾讯云发布微搭生态开放计划,与合作伙伴携手共创产业未来
    SQL Server附加数据库出现错误5123的正确解决方法
    数据分页获取(二)
    Select语句
    数据分页获取(一)
    SQL Server中行转列原理
    QT实现Linux下系统监控小工具之二
  • 原文地址:https://www.cnblogs.com/navysummer/p/11286593.html
Copyright © 2011-2022 走看看