使用正则表达式验证 IPv4 地址 [英] Validating IPv4 addresses with regexp

查看:34
本文介绍了使用正则表达式验证 IPv4 地址的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直试图为 IPv4 验证获得一个有效的正则表达式,但运气不佳.似乎有一次我用 (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(.|$)){4},但它产生了一些奇怪的结果:

I've been trying to get an efficient regex for IPv4 validation, but without much luck. It seemed at one point I had had it with (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(.|$)){4}, but it produces some strange results:

$ grep --version
grep (GNU grep) 2.7
$ grep -E '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(.|$)){4}' <<< 192.168.1.1
192.168.1.1
$ grep -E '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(.|$)){4}' <<< 192.168.1.255
192.168.1.255
$ grep -E '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(.|$)){4}' <<< 192.168.255.255
$ grep -E '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(.|$)){4}' <<< 192.168.1.2555
192.168.1.2555

我进行了搜索,看看是否已经有人问过并回答过这个问题,但其他答案似乎只是简单地展示了如何确定 4 组 1-3 个数字,或者对我不起作用.

I did a search to see if this had already been asked and answered, but other answers appear to simply show how to determine 4 groups of 1-3 numbers, or do not work for me.

推荐答案

^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

接受:

127.0.0.1
192.168.1.1
192.168.1.255
255.255.255.255
0.0.0.0
1.1.1.01        # This is an invalid IP address!

拒绝:

30.168.1.255.1
127.1
192.168.1.256
-1.2.3.4
1.1.1.1.
3...3

在线尝试单元测试:https://www.debuggex.com/r/-EDZOqxTxhiTncN6/1

这篇关于使用正则表达式验证 IPv4 地址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆