【问题标题】:Match String in Second Level Domain Only [closed]仅在二级域中匹配字符串[关闭]
【发布时间】:2013-04-19 12:54:24
【问题描述】:

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

这是一个示例用户输入:

[允许此处出现坏词].[此处不允许出现脏词].[tld]

[此处不允许出现坏词].[tld]

请注意,TLD 可能由单个部分 (.com) 或多个部分 (.co.uk) 组成,应予以考虑。出于这个原因,一个简单的正则表达式将无法解决问题。

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

【问题讨论】:

  • 这很酷。但是What have you tried ?
  • 您有什么尝试解决这个问题的吗?如果您告诉我们您到目前为止所做的尝试,我们将更愿意回答您的问题。 (提出更好问题的有用链接:How to AskFAQ
  • @Rikesh 我试过正则表达式,但这不是一个好的解决方案,例如co.uk 域。
  • 您确实尝试过什么?给你一个提示:你需要一个有效的 top-levelcountry code second-level domains 的列表才能让任何例程可靠地工作。
  • Mozilla 的available here 就是这样一个(可能有点过于复杂)的列表。

标签: php regex parsing preg-match


【解决方案1】:

按照你的例子:

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

如果匹配,则不应允许。

如果您需要一个更通用的答案,您将不得不再挖掘一点。

编辑:
如果您有二级域名列表:

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

这可能会很慢。最好匹配bad,然后检查二级域名是否在列表中。

【讨论】:

  • 这匹配bad.domain.com,而这应该是允许的。
  • @ColorWP.com 误读了您的问题,因为我将verybad.co.uk 作为“2+ 域级别”的示例,这使我同意 fireeyedboy 的观点,即您需要域列表。虽然已编辑。
  • 我已经澄清了我的问题。请检查一下,如果您可以提供其他解决方案,请告诉我。
猜你喜欢
  • 2015-08-30
  • 1970-01-01
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 2021-02-23
  • 2017-12-30
相关资源
最近更新 更多