【问题标题】:Need help in validating domains在验证域方面需要帮助
【发布时间】:2012-12-26 01:09:11
【问题描述】:

我在验证域方面需要帮助。 这是我用来验证的正则表达式:/^[a-z\d][a-z\d-]{0,62}$/i

它满足我的需求,但无法验证域 例如 www.google*.com 或 www.google*.com*。我不想保存这些类型的域。

这是我正在使用的功能:

$pieces = explode(".",$domain_name);
foreach($pieces as $piece) {
    if (!preg_match('/^[a-z\d][a-z\d-]{0,62}$/i', $piece) || preg_match('/-$/', $piece)) {
        return false;
    }
}

这有什么指针吗?

【问题讨论】:

  • 听起来你的问题是“我的正则表达式不允许在域名中使用星号字符,我不希望它,我该如何解决这个问题?” ——这毫无意义。
  • 您是指带有这些星号的通配符吗?
  • 是的,我只想避免像 www.google*.com 或 www.google.com* 这样的域

标签: php regex dns


【解决方案1】:

如果您只是想验证 URL 的格式是否正确,请使用:

filter_var('http://example.com', FILTER_VALIDATE_URL);

正则表达式很昂贵,当有可行的替代方案时应避免使用。

【讨论】:

  • 对于那些使用 PHP FILTER_VALIDATE_URL 将在 URL 中有破折号时返回 false。我认为它已在 5.3.3 中修复
  • @inhan - 如果您使用的是 PHP
  • @SDC 不,我不是。我只记得读过这个,所以我希望其他人能确定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-13
  • 2022-07-08
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多