0

我正在尝试提取名称服务器。的格式$output是这样的,ns1.nameserver.com例如它包含。

它还可能包含www.apple.com.
这当然不是名称服务器。

我试图不包括任何结果,因此包含www.
我的尝试如下:

$regexp = "/(?<!www)([A-Za-z0-9-]+[\.][A-Za-z0-9-]+[\.][A-Za-z0-9-\.]+)/i";
preg_match_all($regexp, $output, $nameservers);
4

1 回答 1

3

你需要向前看,而不是向后看:

/(?!www)([A-Za-z0-9-]+[\.][A-Za-z0-9-]+[\.][A-Za-z0-9-\.]+)/i

但是,这可能还不够,因为它将继续匹配abc.def.com字符串www.abc.def.com。你还需要一些锚点和一个lookbehind(你不需要一些括号、反斜杠或i修饰符):

/(?<!\.)(?!www)\b([A-Za-z0-9-]+\.[A-Za-z0-9-]+\.[A-Za-z0-9.-]+)/
于 2011-08-12T17:25:20.937 回答