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



我需要一个正则表达式来过滤以www.开头的子域,以将它们重定向到同一子域,而无需www.

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

when HTTP_REQUEST {
if { [HTTP::uri] matches_regex "**?????????????**" } {
//* do Something
} else {
//* do something else 
}
}

测试用例:

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

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

我认为这就是你想要的:

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

在这里用一些输入进行了测试。


解释

^www与开头的三个w相匹配。

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

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

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

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

^www.

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

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

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

最新更新