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

2021-03-08 09:55:21 +08:00
 HashV2

我平时正则写的少,太菜了 首先放一个我网上找的 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

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

720 次点击
所在节点    正则表达式
5 条回复
HashV2
2021-03-08 16:55:05 +08:00
这个节点好冷清啊[苦涩]
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
2021-03-09 08:24:21 +08:00
@ygb8745 要求的格式不是这种啊,要这样就好些了, 怎么能满足上述的两种要求格式啊,我正则着实拉胯
ygb8745
2021-03-09 19:04:57 +08:00
@HashV2 后面的地址不是完整的 ip 地址,后面把前面的{3}换成{0,3}就行了
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/

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

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

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

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

© 2021 V2EX