为了检测127.0.0.1/8
网络中的所有IP,我使用了以下常见的正则表达式:
/^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代码:
window.location.hostname.match(
/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
)
如何将上述正则表达式转换为符合eslint
的更安全的正则表达式
发布于 2018-08-21 10:01:05
Eslint生成一个警告,因为regex包含一个量化的组,其中包含替换操作符和量词。在现实中,由于限制量词只“重复”模式三次,模式是相当安全的,但Eslint无法推断。
为了消除警告,打开/展开量化的组(=重复.
+八进制模式三次):
/^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]?)$/
https://stackoverflow.com/questions/51945433
复制相似问题