正则表达式如下:
1 |
/^([a-z0-9]+([a-z0-9-]*(?:[a-z0-9]+))?\.)?[a-z0-9]+([a-z0-9-]*(?:[a-z0-9]+))?(\.us|\.tv|\.org\.cn|\.org|\.net\.cn|\.net|\.mobi|\.me|\.la|\.info|\.hk|\.gov\.cn|\.edu|\.com\.cn|\.com|\.co\.jp|\.co|\.cn|\.cc|\.biz)$/i |
函数如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/** * @author byron sampson <xiaobo.sun@qq.com> * @description 匹配 * q.cn 正确 * q-.cn 错误 * qq.cn正确 * -q.cn 错误 * q-q.cn 正确 * qq-qq-qq.cn 正确 * qq--qq.cn -- 错误 * * @param $domain * @return bool */ function is_domain($domain) { return !empty($domain) && strpos($domain, '--') === false && preg_match('/^([a-z0-9]+([a-z0-9-]*(?:[a-z0-9]+))?\.)?[a-z0-9]+([a-z0-9-]*(?:[a-z0-9]+))?(\.us|\.tv|\.org\.cn|\.org|\.net\.cn|\.net|\.mobi|\.me|\.la|\.info|\.hk|\.gov\.cn|\.edu|\.com\.cn|\.com|\.co\.jp|\.co|\.cn|\.cc|\.biz)$/i', $domain) ? true : false; } |
第二种写法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
/** * @param string $str * @return bool */ function is_domain($str = '') { return !empty($str) && !preg_match('/^-|-$|--|-\.|\.-/', $str) && preg_match('/^([\w-]+\.)?[\w-]+' . reg_exp_suffix() . '$/', $str) ? true : false; } /** * @return mixed */ function reg_exp_suffix() { return '(' . str_replace('.', '\.', implode('|', allow_domain_suffix())) . ')'; } /** * @description 允许的扩展名 * @return array */ function allow_domain_suffix() { $arr = array( '.com', '.com.cn', '.cn', '.net', '.net.cn', '.org', '.org.cn', '.gov.cn', '.hk', '.cc', '.info', '.biz', '.mobi', '.us', '.me', '.co', '.co.jp', '.edu', '.tv', '.la', ); sort($arr); return array_unique(array_reverse($arr)); } |