regex - 如何匹配 IPv4 地址

标签 regex posix ip-address

我正在尝试让我的正则表达式匹配以下内容:

169.254.0.0-169.254.254.255

谁能帮我实现这个目标。

到目前为止我有这个:

169\.254\.([1-9]{1,2}|[1-9]{1,2}[1-4])

但它也会选择 169.254.255.1,这不应该是匹配项之一。

请帮忙!

谢谢

最佳答案

这是我用于一般 IP 验证的正则表达式:

(([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}(?!\d)|2[0-4][0-9](?!\d)|25[0-5](?!\d))[.]?){4}

分割:

1.`[0-9](?!\d)`       -> Any Number 0 through 9 (The `(?!\d)` makes sure it only grabs stand alone digits)
2.`|[1-9][0-9](?!\d)` -> Or any number 10-99 (The `(?!\d)` makes sure it only grabs double digit entries)
3.`|1[0-9]{2}`        -> Or any number 100-199
4.`|2[0-4][0-9]`      -> Or any number 200-249
5.`|25[0-5]`          -> Or any number 250-255
6.`[.]?`              -> With or without a `.`
7.`{4}`               -> Lines 1-6 exactly 4 times

我的 IP 地址验证还没有失败。

对于您的具体情况,应该这样做:

(169\.254\.)((([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}|2[0-4][0-9]|25[0-4])[.])(([0-9](?!\d)|[1-9][0-9](?!\d)|1[0-9]{2}|2[0-4][0-9]|25[0-5])))

这很长,因为我无法弄清楚如何让 169.254.(0-254).255 在不让 169.254.255.1 失败的情况下进行检查

编辑:由于评论而修复

关于regex - 如何匹配 IPv4 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13166016/

相关文章:

正则表达式 - 匹配同时忽略某些字符

javascript - Active Directory 密码策略的正则表达式

c - fork进程是C中多线程的一个例子吗?

C对内存块的写/读检测

c - 在C语言中将IP地址截断为/24的最简单方法是什么?

c++ - 将 UDP 数据包发送到同一地址的效率

regex - 我可以使用什么正则表达式来匹配以点十进制表示法表示的任何有效 IP 地址?

python - 无法在内存中存储巨大的字符串

java - 从文本中删除文件路径

c - 从/dev/random读取字节失败