3

我想匹配一个域(使用 preg_match),但我想排除一个子域。

示例我想匹配example.org上的所有子域,除了boon.example.org

我试过这个:

$test = "boon.example.org";
$test2 = "null";
if(preg_match('#(?!boon)(\w+\.)?example\.org#', $test, $output)) {
    $test2 = $output[2] .'example.org';
}

但是 test2 的输出是: oon.example.org而不是example.org

有人有答案吗?

4

3 回答 3

5

如果您只寻找那个确切的子域,您不能只检查字符串boon.example.org是否存在吗?为此,使用正则表达式似乎有点矫枉过正。

无论如何,以下正则表达式应该做你想做的事:

.*(?<!\bboon\.|^.)example.org

将返回所有子域,subdomain.example.org除了.boon.example.orgboon.example.org

于 2013-03-06T11:37:58.233 回答
0

试试这个:

echo '<pre>';
$test = "boon.example.org";
$test2 = "null";
preg_match('/^(?!boon\.)([\w]+\.)?example\.org$/', $test, $output);
print_r($output);

这将匹配除 boon 之外的所有子域。

于 2013-03-06T11:05:46.097 回答
0

此正则表达式将为您工作:

^(((?!boon).)+\.)?example\.org$

正则表达式链接

于 2013-03-06T11:12:32.793 回答