【发布时间】:2009-08-05 22:49:29
【问题描述】:
我需要一个快速的正则表达式来验证字符串是否为有效的 .au 域名。例如:
xxx.com.au
xxx.net.au
xxx.org.au
xxx.biz.au
xxx.--.au
所有这些都应该被认为是有效的。
对于不像我这样对正则表达式绝望的人来说,这应该很简单。有什么想法吗?
【问题讨论】:
我需要一个快速的正则表达式来验证字符串是否为有效的 .au 域名。例如:
xxx.com.au
xxx.net.au
xxx.org.au
xxx.biz.au
xxx.--.au
所有这些都应该被认为是有效的。
对于不像我这样对正则表达式绝望的人来说,这应该很简单。有什么想法吗?
【问题讨论】:
如果您只想在 .au 空间中允许某些二级 TLD:
/^[a-zA-Z0-9-]+\.(?:com|net|org|biz)\.au$/
根据需要修改由 | 分隔的辅助列表。
如果您不介意严格验证二级 TLD:
^[a-zA-Z0-9-]+\.\a+\.au$
如果您想允许更多子域(即 xxxx.yyyy.com.au):
^(?:[a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.\a+\.au$
如果您使用的特定正则表达式引擎不支持后者,您可能需要使用 a-zA-Z 而不是 \a。
【讨论】:
^[\w\d-\.]+\.au$
这应该可以正常工作。因为 .au 之前的内容可能会在 the ones that already exist 之上添加其他二级域,所以您真的无能为力。
【讨论】:
(.*)\.([com|net|org|biz])\.au
【讨论】:
/^(?:[a-z0-9\-]+\.){2,}au$/i
用于preg_match() 或其他 PCRE 函数:
if(preg_match('/^(?:[a-z0-9\-]+\.){2,}au$/i', $domain))
echo "'$domain' is a valid domain\n";
else
echo "'$domain' is invalid\n";
【讨论】:
{2,} 表示 (?:[a-z0-9\-]+\.) 需要在末尾的“au”之前出现至少两次 .