2012-10-23 9 views
6

Wie überprüfe ich einen gültigen Domain-Namen und Benutzernamen mit regulärem Ausdruck in Javascript?Javascript regulären Ausdruck Validierung für Domain-Namen?

-<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)); 

} 

aber es funktioniert nicht für mich.

+0

http://net.tutsplus.com/tutorials/othe r/8-Regular-Expressions-Sie-sollten-wissen/ –

+1

Was nicht funktioniert? In welchem ​​Format möchten Sie diese akzeptieren, warum nur alphanumerische Zeichen? – Bergi

Antwort

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

versuchen, diese für mich seine Arbeit.

+0

Das funktioniert vielleicht, aber es ist verwirrend, ein regexp-Literal an einen RegExp-Konstruktor zu übergeben, worauf @Bergi in ihrer Antwort hingewiesen hat. – Phil

2

Nicht verwechseln RegExp constructor mit regex literals. Verwenden Sie entweder

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

oder

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

nicht sicher, was der Backslash in es tut, btw. Wolltest du einen Punkt abgleichen? Verwenden Sie in Literal \., in Zeichenfolgenverwendung \\..

1

Check this: 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 
+0

2-Buchstaben-Domains? – Touchpad

0

Dies ist vielleicht ein wenig off-topic, aber nach dem Suchen im Internet für mehrere Stunden und Ausprobieren verschiedener RegExp's (von denen nicht für mich arbeiten würde). Ich beschloss, meine eigene Funktion zu schreiben, die eine Liste gültiger TLD-Erweiterungen aufnehmen und eine Validierung gegen sie ausführen würde. Also für alle, die ein ähnliches Problem haben, lesen Sie bitte meine Javascript-Funktion:

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; 
    } 
} 

Ich habe eine Demo erstellt mit dieser Funktion hier: http://jsfiddle.net/netfox/MhPG8/19/embedded/result/

5

verwenden:

<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> 
+0

Wie wäre es mit den 2-Buchstaben-Domains? – Touchpad

+0

@Touchpad Versuchen Sie Folgendes: '/^[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9](?:\.[a- zA-Z] {2,}) + $/' –

-1

Dieser Code unterstützt auch Subdomains:

^(([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,}$ 
+0

spät zur Party aber wie wäre es mit google.co.uk oder hm.com? – Touchpad

Verwandte Themen