各位老哥,正则怎么写能排除一个或多个特定的 IP,匹配剩余所有 IP(或者说是否可以实现) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cpxjaz
V2EX    正则表达式

各位老哥,正则怎么写能排除一个或多个特定的 IP,匹配剩余所有 IP(或者说是否可以实现)

  •  
  •   cpxjaz 2023-02-17 17:19:03 +08:00 2897 次点击
    这是一个创建于 1034 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题

    第 1 条附言    2023-02-17 17:55:20 +08:00
    说明一下,是用来给安全设备做自定义规则的,可以保证输入的数据是标准的 IP 格式
    目前来看 7#老哥给的没问题,感谢
    附回复:^(?!(特定 IP1|特定 IP2|特定 IP3)\b)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
    18 条回复    2023-02-19 00:23:08 +08:00
    lzhd24
        1
    lzhd24  
       2023-02-17 17:21:54 +08:00 via Android
    不可以,建议用其他命令
    v2eb
        2
    v2eb  
       2023-02-17 17:26:18 +08:00 via Android
    来个示例
    eason1874
        3
    eason1874  
       2023-02-17 17:28:32 +08:00
    连续 IP 就用 CIDR 判断,不连续就用表,要是嫌字符串太大可以先把 IP 转为整数
    cpxjaz
        4
    cpxjaz  
    OP
       2023-02-17 17:29:12 +08:00
    @lzhd24 好的谢谢,我再看看
    cpxjaz
        5
    cpxjaz  
    OP
       2023-02-17 17:29:53 +08:00
    @v2eb 例子的话就是一条规则,匹配除了 1.1.1.1,2.2.2.2 之外的所有 IP
    cpxjaz
        6
    cpxjaz  
    OP
       2023-02-17 17:30:33 +08:00
    @eason1874 不是的老哥,不是写程序,安全设备自定义规则
    yigecaiji
        7
    yigecaiji  
       2023-02-17 17:31:50 +08:00 via Android   1
    ^(?!(特定 IP1|特定 IP2|特定 IP3)\b)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
    chatgpt 给的,我试了几个简单的 ip 是可以用的。
    cvooc
        8
    cvooc  
       2023-02-17 17:33:58 +08:00
    以下是使用 Javascript 编写的正则表达式,用于匹配除了特定的 IP 地址之外的所有 IP 地址:

    ```Javascript
    const regex = /^(?!特定 IP 地址 1$|特定 IP 地址 2$|特定 IP 地址 3$)(\d{1,3}\.){3}\d{1,3}$/;

    // 用例
    const ip1 = "192.168.0.1";
    const ip2 = "特定 IP 地址 1";
    const ip3 = "10.0.0.1";

    console.log(regex.test(ip1)); // true
    console.log(regex.test(ip2)); // false
    console.log(regex.test(ip3)); // true
    ```

    在这个 Javascript 正则表达式中,与之前的正则表达式相同,使用了负向零宽断言 (?!...) 来匹配除了特定的 IP 地址之外的所有 IP 地址。该正则表达式还使用了捕获组 ( ) 来匹配由点分隔的四个数字组成的 IP 地址,并使用量词 {1,3} 来指定每个数字的取值范围。

    你需要将 特定 IP 地址 1 ,特定 IP 地址 2 和 特定 IP 地址 3 替换为你想要排除的实际 IP 地址。
    cvooc
        9
    cvooc  
       2023-02-17 17:34:46 +08:00
    @retrocode #8 chatgpt 是真的好用, 最近写正则都是丢给它来写
    cpxjaz
        10
    cpxjaz  
    OP
       2023-02-17 17:36:32 +08:00
    @yigecaiji ok 感谢,我试试
    cpxjaz
        11
    cpxjaz  
    OP
       2023-02-17 17:37:31 +08:00
    @retrocode 不是编程,是安全设备的自定义规则,不过还是谢谢啦
    v2eb
        12
    v2eb  
       2023-02-17 17:39:51 +08:00 via Android
    估计进来的都是 ip, 检验不严格的话尝试这个
    "!(特定 ip|特定 ip)"
    还是机器好用, 自己想的费劲
    v2eb
        13
    v2eb  
       2023-02-17 17:43:45 +08:00 via Android
    @v2eb 这里有问题, 先别用了
    dcsuibian
        14
    dcsuibian  
       2023-02-17 17:43:46 +08:00
    有库的就用库,别光用正则,很多时候对规则不够了解反而会增加 bug 且使代码阅读困难
    InDom
        15
    InDom  
       2023-02-17 17:44:20 +08:00
    请注意给 IP 中间的 . 加 \ 转义
    cpxjaz
        16
    cpxjaz  
    OP
       2023-02-17 17:44:30 +08:00
    @v2eb 这个不行,最开始试过,目前简单测了下,7#的老哥给的可以
    lzgshsj
        17
    lzgshsj  
       2023-02-17 17:56:57 +08:00
    这下被 chatgpt 替代了
    snw
        18
    snw  
       2023-02-19 00:23:08 +08:00 via Android
    ChatGPT 给的这答案虽然能用,但有些怪。

    要是输入的本来就是合法 IP ,那么后面直接用.*捕捉就行。
    要是输入的不保证是合法 IP ,那么应该用准确的 IP 正则判断,不然来个 256.256.256.256 也过了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2545 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 99ms UTC 15:33 PVG 23:33 LAX 07:33 JFK 10:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86