V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wlee1991
V2EX  ›  正则表达式

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

  •  
  •   wlee1991 · 2015-09-15 14:16:33 +08:00 · 2338 次点击
    这是一个创建于 3388 天前的主题,其中的信息可能已经有所发展或是发生改变。
    17 条回复    2015-09-16 01:21:32 +08:00
    learnshare
        1
    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
        2
    learnshare  
       2015-09-15 14:21:58 +08:00
    手动复制第二行开始至结尾的 URL
    wlee1991
        3
    wlee1991  
    OP
       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
        4
    wlee1991  
    OP
       2015-09-15 14:30:53 +08:00
    @learnshare
    复制了,貌似不起作用?怎么那么多%?
    learnshare
        5
    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
        6
    Ryans  
       2015-09-15 15:01:54 +08:00
    ([0-9]{1,3}[\.]){3}[0-9]{1,3}
    wlee1991
        7
    wlee1991  
    OP
       2015-09-15 15:19:20 +08:00
    @Ryans 不能大于 255
    18000rpm
        8
    18000rpm  
       2015-09-15 17:36:31 +08:00
    写正则不分行不给注释叫优雅?
    learnshare
        9
    learnshare  
       2015-09-15 17:53:58 +08:00
    @18000rpm 不是给了图形化的展示了么
    18000rpm
        10
    18000rpm  
       2015-09-15 18:51:19 +08:00
    @learnshare 只是觉得一行流的正则以后改起来太麻烦
    https://gist.github.com/19000/52aa3be750d551b1f011
    gamexg
        11
    gamexg  
       2015-09-15 19:03:27 +08:00
    很不优雅, IPv4 的还好, IPv6 的好长。

    https://github.com/GameXG/TcpRoute/blob/master/dnslib/__init__.py#L34
    wlee1991
        12
    wlee1991  
    OP
       2015-09-15 20:13:38 +08:00
    @18000rpm 感觉你这个还可以 25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?
    18000rpm
        13
    18000rpm  
       2015-09-15 21:25:09 +08:00
    @wlee1991 我只是在网上复制了一个来加了几个注释哈哈
    msg7086
        14
    msg7086  
       2015-09-15 21:45:42 +08:00
    优雅地匹配 IP 最好别用正则而是用库。
    ob
        15
    ob  
       2015-09-15 21:58:31 +08:00 via Android
    优雅被用坏了。。😃
    virusdefender
        16
    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
        17
    wlee1991  
    OP
       2015-09-16 01:21:32 +08:00
    @virusdefender 你这个...貌似也不怎么优雅呀...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3011 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 13:47 · PVG 21:47 · LAX 05:47 · JFK 08:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.