javascript - 正则表达式以验证最后一位非零的 IP 地址
问题描述
我有一个正则表达式,我最终从 SO 中的一个答案中使用它。基本上我的正则表达式必须使用 mask 验证 ipv4 地址。
所以我最终使用了下面的正则表达式:
(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/([1-9]|1[0-9]|2[0-9]|3[0-2]|(((128|192|224|240|248|252|254)\.0\.0\.0)|(255\.(0|128|192|224|240|248|252|254)\.0\.0)|(255\.255\.(0|128|192|224|240|248|252|254)\.0)|(255\.255\.255\.(0|128|192|224|240|248|252|254))))
现在我的挑战是不允许 0 在 ip 的最后一位数字中,即
192.168.6.10/mask
有效但192.168.6.0/mask
无效
所以我将上面的正则表达式修改为这样的:
(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[1][0-9][0-9]|[1-9][0-9]|[1-9]?)/([1-9]|1[0-9]|2[0-9]|3[0-2]|(((128|192|224|240|248|252|254)\.0\.0\.0)|(255\.(0|128|192|224|240|248|252|254)\.0\.0)|(255\.255\.(0|128|192|224|240|248|252|254)\.0)|(255\.255\.255\.(0|128|192|224|240|248|252|254))))
但192.168.6.0
在使用 Angular 进行测试时始终有效Validators.pattern
知道我哪里出错了吗?
编辑 IP 列表及其有效性:
192.168.6.6/24 有效 192.168.6.6/24 有效 192.168.6.24/24 有效
192.168.6.0/24 无效 192.168.6.0/255.255.255.0 无效
解决方案
假设最后一部分不能写000
,00
而只是0
。那么你可以这样的正则表达式
^(?:(?:2(?:5[0-5]|[0-4]\d)|1?\d?\d)\.){3}(?:(?:2(?:5[0-5]|[0-4]\d)|1?\d\d|[1-9]))$
其中第一组和最后一组之间的差异应该是从 1 到 9
推荐阅读
- git - 来自远程分支的 git rebase 问题
- function - Dart Flutter:功能未执行
- security - 我在安装 libc6 时遇到问题:amd64 会破坏语言环境,并且不允许取消配置
- javascript - 收到数据后渲染 MathJax
- ios - 如何快速获取窗口大小(包括 iPad 分屏)
- javascript - 如何使用角色反应和自动删除用户反应进行角色检查
- python - 为什么我收到此 django 连接中止错误
- amazon-web-services - Website does not update - Even after Invalidation through AWS Website, CLI and changing metadata of S3 Bucket
- selenium-webdriver - Selenium Java - Chrome 83. 0 - Authentication required. Basic Authentication required. Unable to login
- reactjs - Reactstrap - 如何在按钮内正确渲染微调器?