以下的正則表達式工作正常情況下,域名是根域,但這正則表達式不承認子域爲有效域:正則表達式來允許子域
例如:abc.com
被識別爲有效域名,但如果我用ab.bc.com
然後正則表示字符串是無效的,我怎麼能改善這個以支持ab.bc.com
呢?
var reg = /^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}$/;
if (!reg.test(the_domain))
{
alert('has special characters');
}
else
{
alert('no special characters');
}
這裏是jsfiddle
您可以使用:'/ ^(?:[A-ZA-Z0-9] [A-ZA-Z0-9 - ] {1,61} [A-ZA-Z0-9 ] \。)+ [a-zA-Z] {2,} $ /' – anubhava
爲了完整起見,頂級域名並不總是遵循'\。[a-zA-Z] {2,}' 。尤其是[國際化域名](https://en.wikipedia.org/wiki/Internationalized_domain_name),例如'.рф'不匹配,因爲它們使用非拉丁字符,甚至在ASCII([punycode] (https://en.wikipedia.org/wiki/Punycode))表單('.xn - p1ai'),它們不匹配,因爲它們包含破折號和數字。 – Frxstrem
@Frxstrem:同意,但現在域名與國際化不是優先事項。謝謝! – kosa