Регулярное выражение для соответствия поддомену домена - PullRequest
0 голосов
/ 13 апреля 2019

Базовый URL для сопоставления - 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, что было бы неверно.

Таким образом, поддомен ('sub' в http://sub.testdomain.com),, если присутствует, должен иметь длину от 3 до 10 символов, за которым следуют. изатем testdomain.com

1 Ответ

1 голос
/ 13 апреля 2019

Как насчет того, чтобы сделать целую часть субдомена необязательной с нулевым или множественным соответствием, используя *.Это будет соответствовать как обычному домену, так и поддомену, но не будет иметь автономный символ . для части поддоменов. СМ.

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