Regex 如何使用Subnetmask为IP地址生成正则表达式?

Regex 如何使用Subnetmask为IP地址生成正则表达式?,regex,.htaccess,http,networking,ip,Regex,.htaccess,Http,Networking,Ip,我的IP地址列表如下: 180.183.0.0/16 180.210.216.0/22 180.214.192.0/19 182.52.0.0/15 ...(400 more) 180.183.0.0/16 180.210.216.0/22 180.214.192.0/19 182.52.0.0/15 …(400多个) 如何使用Subnetmask为IP地址生成正则表达式 为什么我想得到这个。 我有一个带有负载均衡器的网站(我不能更改服务器中的任何配置),我的客户端想要拒绝特定国家/地区的访问。

我的IP地址列表如下:

180.183.0.0/16 180.210.216.0/22 180.214.192.0/19 182.52.0.0/15 ...(400 more) 180.183.0.0/16 180.210.216.0/22 180.214.192.0/19 182.52.0.0/15 …(400多个) 如何使用Subnetmask为IP地址生成正则表达式

为什么我想得到这个。

我有一个带有负载均衡器的网站(我不能更改服务器中的任何配置),我的客户端想要拒绝特定国家/地区的访问。 我像这样使用.htaccess

SetEnvIf X-Forwarded-For "59\.(5[6-9]|6[0-1])\.[0-9]+\." denyIP order allow,deny allow from all deny from env=denyIP SetEnvIf X-Forwarded-For“59\.(5[6-9]| 6[0-1])\[0-9]+\.”登叶 命令允许,拒绝 通融 拒绝来自env=denyIP
给定示例文本中的地址列表,这些表达式将通过交替匹配数字范围来匹配请求的范围。不幸的是,它们需要单独构造,因为正则表达式不能真正计算文本。要匹配
182.52
182.53
字符串,您需要使用包含所需子字符串的正则表达式,它看起来像
182.5[23]

  • 180.183.0.0/16的范围为180.183.0.1-180.183.255.254
    • ^180\.183.(?:[0-9]{1,2}1[0-9]{2}2[0-4][0-9]{25[0-5])。(?:[1-9][0-9]?[0-9]{2}2[0-4][0-9]{25[0-4])$
  • 180.210.216.0/22的范围为180.183.0.1-180.183.3.254
    • ^180\.210\[0-3]。(?:[1-9][0-9]?| 1[0-9]{2}| 2[0-4][0-9]| 25[0-4])$
  • 180.214.192.0/19的范围为180.183.0.1-180.183.31.254
    • ^180\.214\(?:[0-9]|[12][0-9]|[3[01])\(?:[1-9][0-9]?[1-9]{2}2[0-4][0-9]| 25[0-4])$
  • 182.52.0.0/15的范围为182.52.0.1-182.53.255.254
    • ^182\.5[23]。(?:[0-9]{1,2}1[0-9]{2}2[0-4][0-9]{25[0-5])。(?:[1-9][0-9]?[1-9]{2}2[0-4][0-9]{25[0-4])。

您到底需要什么?如果列表只有IP地址,为什么需要IP地址的正则表达式。也许你想要的是一个正则表达式来找到特定的地址?在这种情况下,请用您想要过滤的规范来完成问题。您提醒我:如果它可用,我实际上建议使用更强大的工具,例如
iptables
来拒绝访问IP/IP范围。使用htaccess,请求仍然会进入并由您的web服务器(比如Apache)处理,然后它们就会被阻止。使用iptables,它们在实际应用到任何应用程序之前都会被阻止。谢谢,这很有帮助。我希望我能像这样在SetEnvIf中使用从180.210.216.0/22拒绝的
。。。