如何将我的正则表达式检测 127.0.0.1/8 IP 转换为更安全的 IP?
How to transform my regular expression detecting 127.0.0.1/8 IP to a safer one?
为了检测 127.0.0.1/8
网络中的所有 IP,我使用了这个通用的正则表达式:
/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
作业已完成,但通过 es-lint 的 codacy 检测到此正则表达式不安全。
我已经读过这个blog, this ,但我对正则表达式不是很流利,而且我不理解所有的解释。
我尝试在很多位置添加[^,\r\n]
,但它不起作用。
这是一个测试正则表达式的工具:https://regex101.com/r/YbYrcd/1
这是我的 javascript 代码被 eslint 检测为不安全的正则表达式:
window.location.hostname.match(
/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
)
如何将上述正则表达式转换为更安全的符合eslint
的正则表达式?
Eslint 产生警告是因为您的正则表达式包含一个量化组,其中包含交替运算符和量词。实际上,由于限制量词仅 "repeats" 模式的三次,该模式是相当安全的,但 Eslint 无法推断出这一点。
要消除警告,unwrap/unroll 量化组(=重复 .
+ 八位字节模式三次):
/^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]?)$/
为了检测 127.0.0.1/8
网络中的所有 IP,我使用了这个通用的正则表达式:
/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
作业已完成,但通过 es-lint 的 codacy 检测到此正则表达式不安全。
我已经读过这个blog, this
我尝试在很多位置添加[^,\r\n]
,但它不起作用。
这是一个测试正则表达式的工具:https://regex101.com/r/YbYrcd/1
这是我的 javascript 代码被 eslint 检测为不安全的正则表达式:
window.location.hostname.match(
/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
)
如何将上述正则表达式转换为更安全的符合eslint
的正则表达式?
Eslint 产生警告是因为您的正则表达式包含一个量化组,其中包含交替运算符和量词。实际上,由于限制量词仅 "repeats" 模式的三次,该模式是相当安全的,但 Eslint 无法推断出这一点。
要消除警告,unwrap/unroll 量化组(=重复 .
+ 八位字节模式三次):
/^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]?)$/