如何优雅地使用 RegExp 匹配 IP 地址~

2015-09-15 14:16:33 +08:00
 wlee1991
2324 次点击
所在节点    正则表达式
17 条回复
learnshare
2015-09-15 14:21:27 +08:00
IPv4 `/^(((25[0-5])|(2[0-4]\d )|(1?\d{1,2}))\.){3}((25[0-5])|(2[0-4]\d )|(1?\d{1,2}))$/`
https://jex.im/regulex/#!embed=false&flags=&re=%5E (((25%5B0-5%5D )%7C (2%5B0-4%5D%5Cd )%7C (1%3F%5Cd%7B1%2C2%7D ))%5C.)%7B3%7D ((25%5B0-5%5D )%7C (2%5B0-4%5D%5Cd )%7C (1%3F%5Cd%7B1%2C2%7D ))%24
learnshare
2015-09-15 14:21:58 +08:00
手动复制第二行开始至结尾的 URL
wlee1991
2015-09-15 14:26:20 +08:00
this one really ... sucks ...

(\\d{1}|[1-9]{1}\\d{1}|1{1}\\d{1}\\d{1}|2{1}[0-5]{1}[0-5]{1})\\.(\\d{1}|[1-9]{1}\\d{1}|1{1}\\d{1}\\d{1}|2{1}[0-5]{1}[0-5]{1})\\.(\\d{1}|[1-9]{1}\\d{1}|1{1}\\d{1}\\d{1}|2{1}[0-5]{1}[0-5]{1})\\.(\\d{1}|[1-9]{1}\\d{1}|1{1}\\d{1}\\d{1}|2{1}[0-5]{1}[0-5]{1})
wlee1991
2015-09-15 14:30:53 +08:00
@learnshare
复制了,貌似不起作用?怎么那么多%?
learnshare
2015-09-15 15:00:46 +08:00
直接去 https://jex.im/regulex/ 填入下面这一行吧
/^(((25[0-5])|(2[0-4]\d )|(1?\d{1,2}))\.){3}((25[0-5])|(2[0-4]\d )|(1?\d{1,2}))$/
Ryans
2015-09-15 15:01:54 +08:00
([0-9]{1,3}[\.]){3}[0-9]{1,3}
wlee1991
2015-09-15 15:19:20 +08:00
@Ryans 不能大于 255
18000rpm
2015-09-15 17:36:31 +08:00
写正则不分行不给注释叫优雅?
learnshare
2015-09-15 17:53:58 +08:00
@18000rpm 不是给了图形化的展示了么
18000rpm
2015-09-15 18:51:19 +08:00
@learnshare 只是觉得一行流的正则以后改起来太麻烦
https://gist.github.com/19000/52aa3be750d551b1f011
gamexg
2015-09-15 19:03:27 +08:00
很不优雅, IPv4 的还好, IPv6 的好长。

https://github.com/GameXG/TcpRoute/blob/master/dnslib/__init__.py#L34
wlee1991
2015-09-15 20:13:38 +08:00
@18000rpm 感觉你这个还可以 25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?
18000rpm
2015-09-15 21:25:09 +08:00
@wlee1991 我只是在网上复制了一个来加了几个注释哈哈
msg7086
2015-09-15 21:45:42 +08:00
优雅地匹配 IP 最好别用正则而是用库。
ob
2015-09-15 21:58:31 +08:00
优雅被用坏了。。😃
virusdefender
2015-09-15 22:47:31 +08:00
django 的正则

ipv4_re = re.compile (r'^(25[0-5]|2[0-4]\d|[0-1]?\d?\d )(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d )){3}\Z')
wlee1991
2015-09-16 01:21:32 +08:00
@virusdefender 你这个...貌似也不怎么优雅呀...

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/220847

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX