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

请教一个正则的正确写法?

  •  
  •   HashV2 · 2021-03-08 09:55:21 +08:00 · 835 次点击
    这是一个创建于 1354 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我平时正则写的少,太菜了 首先放一个我网上找的 ipv4 的正则:

    export function validIpv4(str) {
      const reg = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/
      return reg.test(str)
    }
    

    实际需求是网段的正则,不是那种简单的两个 ipv4 中间加个-:

    列如:

    小网段:192.168.1.1-192.168.1.254 --> 要求格式:192.168.1.1-254

    大网段:201.110.208.1-201.110.223.254 --> 要求格式:201.110.208.1-223.254

    看到这个正则需求我人傻了

    5 条回复    2021-04-07 18:34:28 +08:00
    HashV2
        1
    HashV2  
    OP
       2021-03-08 16:55:05 +08:00
    这个节点好冷清啊[苦涩]
    ygb8745
        2
    ygb8745  
       2021-03-08 20:57:42 +08:00
    ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\-(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){0,3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
    --
    网段写全不好吗? 什么需求 ->_->
    HashV2
        3
    HashV2  
    OP
       2021-03-09 08:24:21 +08:00
    @ygb8745 要求的格式不是这种啊,要这样就好些了, 怎么能满足上述的两种要求格式啊,我正则着实拉胯
    ygb8745
        4
    ygb8745  
       2021-03-09 19:04:57 +08:00 via Android
    @HashV2 后面的地址不是完整的 ip 地址,后面把前面的{3}换成{0,3}就行了
    wheatup
        5
    wheatup  
       2021-04-07 18:34:28 +08:00
    做好分支,还是挺简单的:
    ```
    ^((192\.168\.1|201.110\.2(0[8-9]|1\d|2[0-3]))\.([1-9]\d?|1\d\d|2[0-3]\d|24\d|25[0-4]))$
    ```

    https://regex101.com/r/xbMdDk/1/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1616 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:53 · PVG 00:53 · LAX 08:53 · JFK 11:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.