为了账号安全,请及时绑定邮箱和手机立即绑定

使用regexp验证IPv4地址

使用regexp验证IPv4地址

FFIVE 2019-07-27 10:50:59
使用regexp验证IPv4地址我一直试图获得有效的IPv4验证正则表达式,但没有太多运气。似乎我曾经有过它(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4},但它会产生一些奇怪的结果:$ grep --versiongrep (GNU grep) 2.7$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.1.1192.168.1.1$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.1.255192.168.1.255$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.255.255$ grep -E '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?(\.|$)){4}\b' <<< 192.168.1.2555192.168.1.2555我做了一个搜索,看看是否已经被问及回答,但其他答案似乎只是显示如何确定4组1-3个数字,或者不适合我。
查看完整描述

3 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞


你已经得到了一个有效的答案,但万一你好奇你的原始方法出了什么问题,答案是你需要围绕你的交替使用括号,否则(\.|$)只有在数字小于200时才需要。


'\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b'

    ^                                    ^


查看完整回答
反对 回复 2019-07-27
?
青春有我

TA贡献1784条经验 获得超8个赞

正则表达式不是这项工作的工具。编写一个分隔四个数字的解析器并检查它们是否在[0,255]范围内会更好。非功能性正则表达式已经不可读了!


查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 533 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信