Php 正则表达式以匹配域的子域

Php 正则表达式以匹配域的子域,php,regex,preg-match,Php,Regex,Preg Match,要匹配的基本url是- 满足的条件是- url“可能”包含长度为3到10个字符的子域,例如:http://sub.testdomain.com 我现在有这个- $string = 'http://testdomain.com'; if(preg_match('/^(http):\/\/(([a-z]{3,10})?[\.])?(testdomain.com)/i', $string)) { echo 'Good'; } else { echo 'Bad'; } 上述条件与

要匹配的基本url是-

满足的条件是-
url“可能”包含长度为3到10个字符的子域,例如:http://sub.testdomain.com

我现在有这个-

$string = 'http://testdomain.com';
if(preg_match('/^(http):\/\/(([a-z]{3,10})?[\.])?(testdomain.com)/i', $string)) {
      echo 'Good';
} else {
     echo 'Bad';
}
上述条件与
http://.testdomain.com
,这也是不正确的


因此,如果存在子域('sub'),则其长度应为3到10个字符,后跟一个。然后testdomain.com

使用
*
将整个子域部分设置为可选的零匹配或多匹配。这将匹配普通域和子域,但子域部分不使用独立的
字符


这为我指明了正确的方向。我在用什么?代替*。https?:\/\/([a-z0-9]+[.])?testdomain[.]com谢谢。
https?:\/\/([a-z0-9]+[.])*testdomain[.]com

$re = '/https?:\/\/([a-z0-9]+[.])*testdomain[.]com/i';
$str = ' http://testdomain.com
http://.testdomain.com
http://sub.testdomain.com';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);