各位安好,请问怎么用正则表达式验证ip段?求普及

各位安好,请问怎么用正则表达式验证ip段?求普及

晚风撩人 发布于 2021-11-30 字数 125 浏览 896 回复 26

例如,在验证ip192.168.1.159/24的时候,前面的ip和后面的/24都同时验证?当然,其他的合格的也必须可以验证才行。多谢各路大神指导。

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(26

筱果果 2021-12-01 26 楼

嗯,谢谢

醉生梦死 2021-12-01 25 楼

http://cobble19.iteye.com/blog/828414

可以考虑使用StringUtils类和Common Validator包,不然自己写起来太累了

奢望 2021-12-01 24 楼

哦哦,好的,谢谢

平定天下 2021-12-01 23 楼

你写的 ^d{1,3}.d{1,3}.d{1,3}.d{1,3}/d{1,2}$ 如果你能确定你写的没有问题的话,

就在两个不同的部分加()然后就可以用捕获组$1取出.

把昨日还给我 2021-12-01 22 楼

请问能说详细点嘛?

勿忘初心 2021-12-01 21 楼

价格括号就行了,然后就可以用捕获组了.

如日中天 2021-12-01 20 楼

好的,谢谢。我试试看

居里长安 2021-12-01 19 楼

^(d{1,3}).(d{1,3}).(d{1,3}).(d{1,3})/(d{1,2})$

如果是你这个解法的话, 就改成这样,然后也可以用group(1)....

冬天旳寂寞 2021-12-01 18 楼

ip段/后面的这个最大为24是吗?

无声静候 2021-12-01 17 楼

回复
忘记了..

空城仅有旧梦在 2021-12-01 16 楼

回复
嗯,谢谢大神

筱果果 2021-12-01 15 楼

(?:ip)?(((?<![0-9])0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).(0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))(?:/([0-9]+))?

改成这样,然后group(1)保存整个ip段,group(2)保存192,group(3)保存168, group(4)保存1,group(5)保存91,group(6)保存24.  (以ip192.168.1.91/24为例)

緦唸λ蓇 2021-12-01 14 楼

这个问题我已经解决了,很简单。。。但是还有另外一个问题,怎么拆分这个ip段?java的

做个少女永远怀春 2021-12-01 13 楼

一旦匹配到,$1将保存ip,$2将保存24

浅沫记忆 2021-12-01 12 楼

回复
拆分是指比如192.168.1.91/24拆成192、168、1、91、24这几个分别拿出来么

倚栏听风 2021-12-01 11 楼

(?:ip)?((?:(?<![0-9])0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).(?:0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).(?:0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).(?:0?[0-9]?[0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))(?:/([0-9]+))?

一人独醉 2021-12-01 10 楼

好的,谢谢,可以考虑

谢绝鈎搭 2021-12-01 9 楼

正则验证ip真不是一个可维护的方案。根据我以前的经验,正则验证合法ip最终会写的非常长,难以维护。

正则验证可以放前端,后端用ipv4本身的算法来验证——按照点分十进制,32位的格式解析ip,解析成二进制流。这样的好处是显然的——不但容易实现,易于维护,还可以很轻松的判断ip地址是否合法

网名女生简单气质 2021-12-01 8 楼

但是找不到怎么验证后面的那一段,而且怎么把它拆分成一个个的ip?

冷清清 2021-12-01 7 楼

网上一大堆。搜一个基本的按要求修改一下就行

等你爱我 2021-12-01 6 楼

回复
哎呦,老打错字.是子网掩码

长安忆 2021-12-01 5 楼

非常感谢您提供的思路,不过不是这样的,我想获取的是192.168.2.2/24,这个里面所有的和24相关的子网掩码取得的IP值,具体的我不知道怎么说,就是这个意思吧。。

醉酒的小男人 2021-12-01 4 楼

回复
用32减去这个值,然后再减去2(广播地址和网络地址)就得到一共有多少个具体的ip,然后再根据起始的这个ip得出全部的ip,至于减不减2要看你想要的ip段里是否想包含.

落墨 2021-11-30 3 楼

回复
未测,随手搜的而已 http://www.sharejs.com/codes/java/6717

眉黛浅 2021-11-30 2 楼

回复
嗯嗯,非常感谢,麻烦您了。

居里长安 2021-11-30 1 楼

String reg = "^(d{1,3}.d{1,3}.d{1,3}.d{1,3})/(d{1,2})$";

String str = "192.168.2.2/24";

第一种懒人方法使用捕获组:

String rst = str.replaceAll(reg,"$1");//得出ip,$2得出第二个括号

第二种正常取捕获组的方式:

 Pattern pattern = Pattern.compile(reg);
  Matcher m = pattern.matcher(str);

if(m.find())

String ip = m.group(1);