【发布时间】:2011-05-31 20:08:34
【问题描述】:
我正在用 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,但没有运气。有更多经验的人能指出我正确的方向吗?
提前致谢
【问题讨论】:
-
它也不会处理
.museumTLD。 -
@David Dorward,我的回答应该支持所有已知的 TLD。
-
我认为这根本不是重复的 - 另一篇文章指出该功能过度杀伤并验证整个 URL,而不仅仅是域和 tld。对于不懂正则表达式的人,我认为这可能会有所帮助。
标签: php regex validation dns