有效的域名

时间:2010-12-29 00:24:54

标签: php regex validation dns

  

可能重复:
  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,但没有运气。任何有经验的人都可以指出我正确的方向吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

您目前所拥有的内容如下:
  - [a-z0-9]:一封信或一个数字   - [a-z0-9\-]+:一个字母或数字或连字符,1次或多次
  - [a-z0-9]:一封信或一个数字

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

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

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