首页 文章

如何使用子网掩码为IP地址创建正则表达式?

提问于
浏览
3

我有这样的IP地址列表:

180.183.0.0/16
180.210.216.0/22
180.214.192.0/19
182.52.0.0/15
...(400 more)

如何使用子网掩码为IP地址创建正则表达式?

Why I want to get this.

我有一个带Load Balancer的网站(我无法更改服务器中的任何配置),我的客户想要拒绝来自特定国家/地区的访问权限 . 我像这样使用.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

1 回答

  • 3

    给定示例文本中的地址列表,这些表达式将匹配请求的范围,方法是使用交替匹配数字范围 . 不幸的是,他们真的在评估文本 . 要匹配 182.52182.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]?|1[0-9]{2}|2[0-4][0-9]|25[0-4])$
      enter image description here

    • 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])$
      enter image description here

    • 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[0-9]{2}|2[0-4][0-9]|25[0-4])$
      enter image description here

    • 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[0-9]{2}|2[0-4][0-9]|25[0-4])$
      enter image description here

相关问题