【问题标题】:Valid domain name [duplicate]有效域名[重复]
【发布时间】:2011-05-31 20:08:34
【问题描述】:

可能重复:
PHP validation/regex for URL

我正在用 PHP 构建一个小应用程序,并且必须验证域名(用于电子邮件地址)。例如,如果我有 mads@gmail.com,我想检查 gmail.com 是否是一个有效的域名(我实际上是在丢弃 @ 之前的部分)。

我一直在使用以下代码:

if (!preg_match ("/^[a-z0-9][a-z0-9\-]+[a-z0-9](\.[a-z]{2,4})+$/i", trim($valid_emails[$i]))) {
         // Return error
}

一切正常。直到我得到 GE MoneyBank 作为客户。他们使用 ge.com 作为他们的域,但没有通过。

我对正则表达式有基本的了解,并尝试删除一些 [a-z0-9] 块,因此最小字符数降至 2,但没有运气。有更多经验的人能指出我正确的方向吗?

提前致谢

【问题讨论】:

  • 它也不会处理.museum TLD。
  • @David Dorward,我的回答应该支持所有已知的 TLD。
  • 我认为这根本不是重复的 - 另一篇文章指出该功能过度杀伤并验证整个 URL,而不仅仅是域和 tld。对于不懂正则表达式的人,我认为这可能会有所帮助。

标签: php regex validation dns


【解决方案1】:

您目前拥有的功能如下:
- [a-z0-9]: 字母或数字
- [a-z0-9\-]+:字母、数字或连字符,1次或多次
- [a-z0-9]:字母或数字

您的问题是它至少需要 3 个字母。

您需要确保它只能接受两个字母,并且最后一个不能是连字符。

所以你需要将中间表达式改为0次或多次:
- [a-z0-9\-]*:字母或数字或连字符,0次或多次

【讨论】:

  • 这似乎不起作用。它仍然说“ge.com”无效。
  • 对我有用。你可以在这里试试:spaweditor.com/scripts/regex/index.php
  • 现在可以使用了。我编辑了错误的文件。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 2012-09-19
  • 2010-11-17
相关资源
最近更新 更多