使用正则表达式匹配 www.test.com、test.com 和 www.test.org,但不匹配 test.org
Using a regex to match www.test.com, test.com and www.test.org, but not test.org
Nginx can use Perl regular expressions for listening on different virtual hosts/server names, among many things. 我正在尝试创建一个正则表达式来匹配具有不同 TLD 的域,但没有 www 子域的域除外。我一直在使用 RegExr 来帮助我创建一个初始正则表达式,并阅读了一些内容以尝试加深我的理解,但我无法完全理解如何做到这一点。
我一直在尝试创建一个正则表达式来匹配以下内容:
test.com (match)
www.test.com (match)
test.org (fail)
www.test.org (match)
test.net (match)
www.test.net (match)
test.biz (match)
www.test.biz (match)
到目前为止我有:
~^(www\.|)test\.(com|org|net|biz)$
作为初始正则表达式,但我不确定如何添加异常来实现我想要的。
如果这看起来很简单,非常感谢和抱歉。 (第一次创建正则表达式,您可能会说。)
我可以在 PCRE 正则表达式部分为您提供帮助,但 nginx 部分可能会出现问题。
~^(?!test\.org)(?:www\.)?test\.(?:com|org|net|biz)$
这使用否定前瞻来确保字符串无法匹配 "test.org",然后在您的 "test." 和 TLD 之前继续有一个可选的前缀 "www."。
您可以在 regex101.com 找到这个(或任何正则表达式)的 a more thorough walk-through,并注意您提供的每个测试的性能(不要介意我添加的标志,那些只需确保测试域在此环境中全部匹配即可)。
^(www\.test\.org|(www\.)?test\.(com|net|biz))$
是最直接的方法——只需将异常完全设为异常即可。
Nginx can use Perl regular expressions for listening on different virtual hosts/server names, among many things. 我正在尝试创建一个正则表达式来匹配具有不同 TLD 的域,但没有 www 子域的域除外。我一直在使用 RegExr 来帮助我创建一个初始正则表达式,并阅读了一些内容以尝试加深我的理解,但我无法完全理解如何做到这一点。
我一直在尝试创建一个正则表达式来匹配以下内容:
test.com (match)
www.test.com (match)
test.org (fail)
www.test.org (match)
test.net (match)
www.test.net (match)
test.biz (match)
www.test.biz (match)
到目前为止我有:
~^(www\.|)test\.(com|org|net|biz)$
作为初始正则表达式,但我不确定如何添加异常来实现我想要的。
如果这看起来很简单,非常感谢和抱歉。 (第一次创建正则表达式,您可能会说。)
我可以在 PCRE 正则表达式部分为您提供帮助,但 nginx 部分可能会出现问题。
~^(?!test\.org)(?:www\.)?test\.(?:com|org|net|biz)$
这使用否定前瞻来确保字符串无法匹配 "test.org",然后在您的 "test." 和 TLD 之前继续有一个可选的前缀 "www."。
您可以在 regex101.com 找到这个(或任何正则表达式)的 a more thorough walk-through,并注意您提供的每个测试的性能(不要介意我添加的标志,那些只需确保测试域在此环境中全部匹配即可)。
^(www\.test\.org|(www\.)?test\.(com|net|biz))$
是最直接的方法——只需将异常完全设为异常即可。