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

时间:2019-04-13 11:07:09

标签: php regex preg-match

要匹配的基本网址是-http://testdomain.com

要满足的条件是- url "could" contain a subdomain from 3 to 10 characters length, for example: 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匹配,这是不正确的。

因此,子域(http://sub.testdomain.com中的'sub')(如果存在)应为3到10个字符的长度,后跟一个。然后是testdomain.com

1 个答案:

答案 0 :(得分:1)

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

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);