17220161221160719

IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

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

摘自:百度百科[1]

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

0 到 255 的式子已经写出来了,那么一共四段再加上中间的点就很容易了

后边“点”和“数字”重复三次就可以了

(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}

屏幕快照 2019-06-30 下午2.13.37.png

提取一段内容中的所有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}$

下边是各种语言的程序代码:(使用“在线工具[2]”生成)

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)

}

rb

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}/

str = ''

p pattern.match(str)

python2

import re

pattern = re.compile(ur'((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 = u''

print pattern.search(str)

python3

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());

}

}

objc

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) {

// ...

}

经过大量数据测试,均可完美匹配,例如:001.001.001.001 依然是OK的,如有问题敬请指出,会第一时间回复

请尊重原创,转载注明出处

java正则匹配ip_正则表达式 - 匹配 IP 地址相关推荐

  1. java正则匹配ip_正则表达式匹配ip地址

    iPv4的ip地址都是(1~255).(0~255).(0~255).(0~255)的格式 下面给出相对应的正则表达式: "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9] ...

  2. JAVA正则校验加减乘除,正则表达式匹配加减法算法

    搜索热词 通过键盘输入100以内正整数的加.减运算式,请编写一个程序输出运算结果字符串. 输入字符串的格式为:"操作数1 运算符 操作数2","操作数"与&qu ...

  3. java正则表达式匹配数字范围_在java中怎么利用正则表达式匹配数字

    在java中怎么利用正则表达式匹配数字 发布时间:2020-12-03 17:47:12 来源:亿速云 阅读:58 作者:Leah 在java中怎么利用正则表达式匹配数字?针对这个问题,这篇文章详细介 ...

  4. shell脚本通过正则表达式提取 IP 地址

    假设需要提取的 IP 地址在文件 test.txt 中,可以使用以下 shell 脚本通过正则表达式提取 IP 地址并打印 grep -E -o "([0-9]{1,3}.){3}[0-9] ...

  5. 内网ip正则表达式php,PHP使用正则表达式判断IP地址是否正确

    IP 地址想必大家都很熟悉,由 4 组 0~255 之间的数字组成,每个数字之间使用英文句号"."分割,例如 192.168.0.1 就是一个有效的 IP 地址.想要正确的使用正则 ...

  6. Java技巧: 根据网址查询DNS/IP地址

    需求: 给定一个URL地址, 例如: http://www.cncounter.com/tools/shorturl.php, 解析对应的IP地址和端口号. 说明: 本文不涉及底层的 DNS 协议, ...

  7. java 如何获取本机所有ip地址呢?

    转自: java 如何获取本机所有ip地址呢? ip地址简介: IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址. IP地址是IP协议提供的一种统一 ...

  8. java正则匹配url_正则表达式匹配URL

    最近在做一些关于URL匹配的项目,本来对正则表达式了解的不多,上网搜索了好多前辈写的正则表达式,发现很少能被我使用的,现将我自己写的正则表达式贴出来,供大家参考. %% 首先,正则表达式: Strin ...

  9. java正则匹配_JAVA正则表达式匹配括号

    JAVA的正则表达式目前还不支持平衡组,要实现匹配括号只有定制深度. 其原理就是不断循环匹配括号里的内容和括号后面的内容(\\([^\\(\\)]*\\)[^\\(\\)]*)* 例子: //匹配二级 ...

最新文章

  1. 艾伟_转载:C#中的委托和事件-抛砖引玉
  2. AngularJS基于模块化的MVC实现
  3. Android检测是否有悬浮窗,Android 获取判断是否有悬浮窗权限的方法
  4. matlab mtime,matlab中的视频分析工具箱 提供matlab中的视频分析工具 - 下载 - 搜珍网...
  5. oracle运行产生的日志在哪里,运行临时表,是否有日志产生
  6. Java毕业设计-养老院管理系统
  7. [转]库存那些事儿_8_盘点
  8. 网页飘窗效果,jsp页面飘窗浮窗,html飘窗浮窗,点叉号关闭飘窗
  9. VMware12安装win7图文教程
  10. SLCP认证辅导,SLCP整合评估框架包含三个要素及验证步骤
  11. 用keyboard模块模拟记录键盘操作
  12. Γ函数及Γ分布,t分布,ϰ分布和费舍尔分布
  13. 土木工程成功转行Python,月入13k,太香......
  14. 微软 2020 财年营收突破 1 万亿人民币、净利润 3099 亿元
  15. 国际巨星Ricky Martin抒情MTV
  16. r55600g和i510400选哪个好
  17. SpringBoot-心跳机制+redis实现网站实时在线人数统计
  18. linux内核分析课程笔记(二)
  19. nginx 多进程 + io多路复用 实现高并发
  20. 华为HubSpoke实验

热门文章

  1. 头盔佩戴检测(行人跟踪技术检测)
  2. 读小说赚钱吗?这个年入百万
  3. dcb模式(dcb模式)
  4. 量化交易学习(10)均线交叉策略
  5. 计算机盘中文件夹丢失,“文件夹丢失,我的电脑杀完毒后,很多文件夹找不到了”的解决方案...
  6. USACO 2015 January Contest Bronze——奶牛的旅行路线
  7. EndNote X7如何在论文中嵌入中文格式要求的参考文献
  8. 重庆OA办公系统目前推出PC端、移动终端(安卓、IOS、平板)- 上弦科技
  9. Cesium实时目标跟踪最新特效教程系列1—实时发亮直线跟踪移动目标
  10. (萌新笔记)python的复习笔记