首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将检测127.0.0.1/8 IP的正则表达式转换为更安全的IP?

如何将检测127.0.0.1/8 IP的正则表达式转换为更安全的IP?
EN

Stack Overflow用户
提问于 2018-08-21 09:18:07
回答 1查看 410关注 0票数 1

为了检测127.0.0.1/8网络中的所有IP,我使用了以下常见的正则表达式:

代码语言:javascript
运行
复制
/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/

这项工作已经完成,但是通过es的盲从检测到这个regexp是不安全的。

我已经读过这个博客,这个堆栈过流问题,但是我不太懂regexp,也不明白所有的解释。

我试图在很多位置添加[^,\r\n],但它不起作用。

下面是测试regexp:https://regex101.com/r/YbYrcd/1的工具

下面是由eslint检测为不安全regexp的javascript代码:

代码语言:javascript
运行
复制
window.location.hostname.match(
  /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
)

如何将上述正则表达式转换为符合eslint的更安全的正则表达式

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-21 10:01:05

Eslint生成一个警告,因为regex包含一个量化的组,其中包含替换操作符和量词。在现实中,由于限制量词只“重复”模式三次,模式是相当安全的,但Eslint无法推断。

为了消除警告,打开/展开量化的组(=重复. +八进制模式三次):

代码语言:javascript
运行
复制
/^127\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/

regex演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51945433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档