java正则匹配ip_正则表达式 - 匹配 IP 地址

本文介绍了如何使用 Java 正则表达式匹配 IP 地址,包括匹配 IP 地址的规则、正则表达式组成以及在不同编程语言中验证 IP 地址的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

82886d77440c

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}

82886d77440c

屏幕快照 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的,如有问题敬请指出,会第一时间回复

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值