javascript - 正则表达式匹配由空格分隔的多个子网
问题描述
当前正则表达式以匹配由 a 分隔的多个子网space
rexp = /^([01]?\d\d?|2[0-4]\d|25[0-5])(?:\.[01]?\d\d?|2[0-4]\d|25[0-5]){3}(?:\/[0-2]\d|\/3[0-2])?$(\s(^([01]?\d\d?|2[0-4]\d|25[0-5])(?:\.[01]?\d\d?|2[0-4]\d|25[0-5]){3}(?:\/[0-2]\d|\/3[0-2])?$))*$/)
测试字符串192.168.2.1/24 192.168.2.1/32
解决方案
您的正则表达式似乎已损坏。你可以试试这个:
^([01]?\d\d?|2[0-4]\d|25[0-5])(?:\.[01]?\d\d?|2[0-4]\d|25[0-5]){3}(?:\/[0-2]\d|\/3[0-2])?(\s+([01]?\d\d?|2[0-4]\d|25[0-5])(?:\.[01]?\d\d?|2[0-4]\d|25[0-5]){3}(?:\/[0-2]\d|\/3[0-2]))*$
另一种选择是使用 Javascript 解析字符串并为每个部分使用更简单的正则表达式。这是一个例子:
const s = '192.168.2.1/24 192.168.2.1/32 250.161.23.1/32 0.1.2.1/01';
const pattern = /([01]?\d\d?|2[0-4]\d|25[0-5])(?:\.[01]?\d\d?|2[0-4]\d|25[0-5]){3}(?:\/[0-2]\d|\/3[0-2])/;
const result = s.trim().split(/\s+/).map(e => e.match(pattern) != null).reduce((result, next) => result && next, true);
console.log(result);
这打印:
true
推荐阅读
- c# - .net 核心实体框架“添加迁移”不起作用
- php - 避免路径名 Composer 供应商/自动加载
- mongodb - 在 Pymongo 中创建集合之间的关系并渲染它 Jinja
- node.js - 使用 query-overpass 和 turf.js 将 geojson 多边形转换为带有节点的点
- json - @app.route('/upload/ 的烧瓶文档
') - python - 输出重复
- java - 使用嵌套地图计算地图以转换特定值
- ios - TabBar 选择项更改背景颜色
- java - 在链接下拉列表中选择汽车品牌 > 型号 > 电机
- database - 使用 Gradle 时 flywayDb 的类路径是什么?