繁体   English   中英

排除 ip 特定模式的正则表达式

[英]Regex that exclude specific pattern of ip

我正在通过正则表达式过滤特定的 ip 地址。 例如,所有最后一个八位字节中包含 1 的 ip 地址即 XXX.XXX.XXX.1 应排除,但不能排除 11 或 123 或 125。示例示例:

正则表达式应该丢弃
192.168.1.1
192.168.20.1
192.168.30.1
但不应丢弃
192.168.1.101
192.168.20.103
我已经尝试过正则表达式:
^(?,\d{1.3}\,\d{1.3}\,\d{1.3}\.[^\1]).*$
但无法按预期排除。

任何帮助表示赞赏!

匹配最后一个八位位组时,使用(?:1\d+|[02-9]\d*)$ - 要么匹配一个 1 后跟其他数字,要么匹配不是1 的东西,可能后跟其他数字数字:

^\d{1,3}(?:\.\d{1,3}){2}\.(?:1\d+|[02-9]\d{0,2})$

https://regex101.com/r/gB5c6z/1

另一种选择,负前瞻:

^\d{1,3}(?:\.\d{1,3}){2}\.(?,1$)\d{1,3}$

考虑到给定的格式和 IP 将是有效的,你可以使用 endsWith

 let ips = [`192.168.1.1`, `192.168.20.1`, `192.168.30.1`, `192.168.1.101`, `192.168.20.103`] let checker = (str) =>.str.endsWith(`.1`) ips.forEach(v => console.log(checker(v)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM