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

2023-02-17 17:19:03 +08:00
 cpxjaz

如题

944 次点击
所在节点    正则表达式
18 条回复
lzhd24
2023-02-17 17:21:54 +08:00
不可以,建议用其他命令
v2eb
2023-02-17 17:26:18 +08:00
来个示例
eason1874
2023-02-17 17:28:32 +08:00
连续 IP 就用 CIDR 判断,不连续就用表,要是嫌字符串太大可以先把 IP 转为整数
cpxjaz
2023-02-17 17:29:12 +08:00
@lzhd24 好的谢谢,我再看看
cpxjaz
2023-02-17 17:29:53 +08:00
@v2eb 例子的话就是一条规则,匹配除了 1.1.1.1,2.2.2.2 之外的所有 IP
cpxjaz
2023-02-17 17:30:33 +08:00
@eason1874 不是的老哥,不是写程序,安全设备自定义规则
yigecaiji
2023-02-17 17:31:50 +08:00
^(?!(特定 IP1|特定 IP2|特定 IP3)\b)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
chatgpt 给的,我试了几个简单的 ip 是可以用的。
retrocode
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 地址。
retrocode
2023-02-17 17:34:46 +08:00
@retrocode #8 chatgpt 是真的好用, 最近写正则都是丢给它来写
cpxjaz
2023-02-17 17:36:32 +08:00
@yigecaiji ok 感谢,我试试
cpxjaz
2023-02-17 17:37:31 +08:00
@retrocode 不是编程,是安全设备的自定义规则,不过还是谢谢啦
v2eb
2023-02-17 17:39:51 +08:00
估计进来的都是 ip, 检验不严格的话尝试这个
"!(特定 ip|特定 ip)"
还是机器好用, 自己想的费劲
v2eb
2023-02-17 17:43:45 +08:00
@v2eb 这里有问题, 先别用了
dcsuibian
2023-02-17 17:43:46 +08:00
有库的就用库,别光用正则,很多时候对规则不够了解反而会增加 bug 且使代码阅读困难
InDom
2023-02-17 17:44:20 +08:00
请注意给 IP 中间的 . 加 \ 转义
cpxjaz
2023-02-17 17:44:30 +08:00
@v2eb 这个不行,最开始试过,目前简单测了下,7#的老哥给的可以
lzgshsj
2023-02-17 17:56:57 +08:00
这下被 chatgpt 替代了😵
snw
2023-02-19 00:23:08 +08:00
ChatGPT 给的这答案虽然能用,但有些怪。

要是输入的本来就是合法 IP ,那么后面直接用.*捕捉就行。
要是输入的不保证是合法 IP ,那么应该用准确的 IP 正则判断,不然来个 256.256.256.256 也过了。

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

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

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

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

© 2021 V2EX