我正在使用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,但没有运气。任何有经验的人都可以指出我正确的方向吗?
提前致谢
答案 0 :(得分:1)
您目前所拥有的内容如下:
- [a-z0-9]
:一封信或一个数字
- [a-z0-9\-]+
:一个字母或数字或连字符,1次或多次
- [a-z0-9]
:一封信或一个数字
你的问题是它至少需要3个字母。
你需要确保它只能接受两个字母,而最后一个字母不能是连字符。
因此您需要将中间表达式更改为0次或更多次:
- [a-z0-9\-]*
:字母或数字或连字符,0次或更多次