javascript正则表达式验证域名?

时间:2012-10-23 09:53:34

标签: javascript

如何在javascript中使用正则表达式检查有效的域名和用户名?

-<script>
function validate()
{
 var patt1=new RegExp(/^[a-zA-Z0-9._-]+\\[a-zA-Z0-9.-]$/);

   var text= document.getElementById('text1').value;

  alert(patt1.test(text));

}

但它对我不起作用。

6 个答案:

答案 0 :(得分:6)

function CheckIsValidDomain(domain) { 
    var re = new RegExp(/^((?:(?:(?:\w[\.\-\+]?)*)\w)+)((?:(?:(?:\w[\.\-\+]?){0,62})\w)+)\.(\w{2,6})$/); 
    return domain.match(re);
} 

为我尝试这项工作。

答案 1 :(得分:5)

使用此:

<script>
    function frmValidate() {
        var val = document.frmDomin.name.value;
        if (/^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+$/.test(val)) {
            alert("Valid Domain Name");
            return true;
        } else {
            alert("Enter Valid Domain Name");
            val.name.focus();
            return false;
        }
    }
</script>

答案 2 :(得分:2)

请勿将RegExp constructorregex literals混淆。使用

/^[a-zA-Z0-9._-]+\\[a-zA-Z0-9.-]$/

new RegExp("^[a-zA-Z0-9._-]+\\\\[a-zA-Z0-9.-]$");

不确定反斜杠在那里做什么,顺便说一下。你想要匹配一个点吗?在文字中,使用\.,在字符串中使用\\.

答案 3 :(得分:1)

检查一下:http://shauninman.com/archive/2006/05/08/validating_domain_names

/^([a-z0-9]([-a-z0-9]*[a-z0-9])?\\.)+((a[cdefgilmnoqrstuwxz]|aero|arpa)|(b[abdefghijmnorstvwyz]|biz)|(c[acdfghiklmnorsuvxyz]|cat|com|coop)|d[ejkmoz]|(e[ceghrstu]|edu)|f[ijkmor]|(g[abdefghilmnpqrstuwy]|gov)|h[kmnrtu]|(i[delmnoqrst]|info|int)|(j[emop]|jobs)|k[eghimnprwyz]|l[abcikrstuvy]|(m[acdghklmnopqrstuvwxyz]|mil|mobi|museum)|(n[acefgilopruz]|name|net)|(om|org)|(p[aefghklmnrstwy]|pro)|qa|r[eouw]|s[abcdeghijklmnortvyz]|(t[cdfghjklmnoprtvwz]|travel)|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw])$/i

答案 4 :(得分:0)

这可能稍微偏离主题,但在网上搜索了几个小时并尝试了各种RegExp(其中没有对我有用)。我决定编写自己的函数,该函数将列出有效的TLD扩展并对它们进行验证。因此,对于遇到类似问题的任何人,请查看我的Javascript函数:

function domainCheck(dom) {
    // convert input to lowercase.
    dom = dom.toLowerCase();
    // find the first occurance of '.'
    pos = dom.indexOf(".");
    // Using the first occurance of '.'
    // find the extension submitted.
    tld = dom.substring(pos);
    switch(tld) {
        // TLD's to accept.
        case '.com': return true; break;
        case '.co.uk': return true; break;
        case '.eu': return true; break;
        case '.io': return true; break;
        case '.co': return true; break;
        case '.net': return true; break;
        default: return false;
    }
}

我在这里使用此功能创建了一个演示: http://jsfiddle.net/netfox/MhPG8/19/embedded/result/

答案 5 :(得分:-1)

此代码也支持子域:

^(([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]|[a-zA-Z0-9])\.)*[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}$