我需要一个正则表达式来过滤以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