繁体   English   中英

正则表达式匹配“www”以外的子域名

[英]Regex to match subdomains other than “www”

大家好。 现在我在我的PHP应用程序上有这个正则表达式:

$regex = '#^(www\.)*([^www][a-z0-9-]+)\.tanlup\.local$#';

这就是我需要做的事情:

MATCH www.something.tanlup.local  
MATCH something.tanlup.local

NOT MATCH www.tanlup.local  
NOT MATCH tanlup.local

问题是当我有一个以“w”开头的子域时,它不匹配! 有谁知道为什么以及如何让它变得更好?

谢谢!

为这样的一次性情况构建过于复杂的正则表达式是弄巧成拙的。 你可能有更好的运气建立一个非常通用的正则表达式和黑色列出某些域:

$regex = '/^([-\w]+.)+tanlup.local$/';
$disallowed = array ('www.tanlup.local', 'tanlup.local');

if (preg_match($regex, $str) && false === array_search($str, $disallowed) {
  // success
}

你需要一个负面的lookbehind断言

^.*(?<!^www)\.tanlup\.local$

请注意,并非所有正则表达式引擎都支持lookbehind,但我相信PHP可以。

[^ www]不会做你认为它做的事情。 你说你不想要'w'字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM