仅在二级域中匹配字符串

时间:2013-04-19 12:54:25

标签: php regex parsing preg-match

用户在我的脚本中输入域/子域作为输入。我不想在域内允许特定字符串,但允许它们在子域内(如果使用子域)。

以下是用户输入示例:

[允许这里的坏词]。[不允许这里的坏词]。[tld]

[不允许这里的坏词]。[tld]

请注意,TLD可能包含单个部分(.com)或多个部分(.co.uk),应予以考虑。出于这个原因,一个简单的正则表达式不会起到作用。

此外,坏词可能在域或子域本身之前,之后或之间。

1 个答案:

答案 0 :(得分:1)

按照你的例子:

"^[^.]*bad[^.]*\.[^.]+$"

如果匹配,则不应该允许。

如果你需要一个更通用的答案,你将需要多挖一点。

修改
如果您有二级域名列表:

"bad[^.]*\.(co.uk|com|...)$"

虽然可能会很慢。可以更好地匹配坏,然后检查二级域名是否在列表中。