我有这样的IP地址列表:
180.183.0.0/16 180.210.216.0/22 180.214.192.0/19 182.52.0.0/15 ...(400 more)
如何使用子网掩码为IP地址创建正则表达式?
为什么我想要这个。
我有一个带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
答案 0 :(得分:3)
给定示例文本中的地址列表,这些表达式将匹配请求的范围,方法是使用交替匹配数字范围。不幸的是,它们需要单独构建,因为正则表达式并不能真正评估文本。要匹配182.52
或182.53
字符串,您需要使用包含所需子字符串的正则表达式,它看起来像182.5[23]
。
^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])$
^180\.210\.[0-3]\.(?:[1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-4])$
^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])$
^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])$