使用正则表达式过滤以www开头的子域

时间:2017-08-15 13:52:15

标签: regex https filter subdomain

我需要一个正常的表达式来过滤我的子域名,从www.开始,将它们重定向到没有www.

的相同子域名

所以我需要在域名中过滤超过3个点的网址,并以www.开头:

when HTTP_REQUEST {

   if { [HTTP::uri] matches_regex "**?????????????**" } {

       //* do Something

   } else {

       //* do something else 

   }

}

测试用例:

www.subdomain.domain.com应转换为subdomain.domain.com

我没有任何正则表达式的经验,所以如果有人有线索,那将会很有帮助。

2 个答案:

答案 0 :(得分:1)

我认为这就是你想要的:

^www(\.[^\/\?\n]*){3}

通过一些输入测试here

<强>说明

^www匹配开头的三个w

[^\/\?\n]*匹配域名末尾标记以外的任何内容(?也可以结束域名。)

(\.[^\/\?\n]*){3}匹配一个点,后跟域名末尾以外的任何内容,三次。这部分将确保您有一个子域(3个点计算www.)。

答案 1 :(得分:-1)

您确定需要正则表达式来匹配吗?

使用正则表达式完成所需的最简单方法是:

^www\.

^是字符串开头的锚点,\.是转义点,因为正则表达式中的点表示除换行符之外的任何内容。

所以基本上这个正则表达式告诉你,匹配我www正好在字符串的开头,然后出现点字符。

您可以在此处查看演示:https://regex101.com/r/ZnVFaR/1