2012-10-23 12 views
6

come controllare un nome di dominio e un nome utente validi con espressione regolare in javascript?convalida di espressioni regolari javascript per il nome di dominio?

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

} 

ma non funziona per me.

+0

http://net.tutsplus.com/tutorials/othe r/8-regular-espressioni-you-should-know/ –

+1

Che cosa non funziona? In quale formato vuoi accettarli, perché solo caratteri alfanumerici? – Bergi

risposta

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

provare questo suo lavoro per me.

+0

Questo può funzionare, ma è confuso passare un letterale regexp a un costruttore RegExp come @Bergi ha sottolineato nella risposta. – Phil

2

Non confondere lo RegExp constructor con regex literals. Utilizzare

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

o

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

Non sono sicuro che il backslash fa in là, btw. Volevi abbinare un punto? In letterale, utilizzare \., in stringa \\..

1

controllo questo: 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

Domini a 2 lettere? – Touchpad

0

Questo è forse un po 'fuori tema, ma dopo aver cercato su Internet per diverse ore e aver provato vari RegExp (non di quelli che avrebbero funzionato per me). Ho deciso di scrivere la mia funzione in modo da prendere una lista di estensioni TLD valide ed eseguire una convalida nei loro confronti. Quindi, per tutti coloro che sta avendo un problema simile, si prega di consultare la mia funzione 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; 
    } 
} 

ho creato una demo di utilizzare questa funzione qui: http://jsfiddle.net/netfox/MhPG8/19/embedded/result/

5

Utilizzare questa:

<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

come circa i domini di 2 lettere? – Touchpad

+0

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

-1

Questo codice supporta anche sottodomini:

^(([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

in ritardo per la festa, ma che ne dici di google.co.uk o hm.com? – Touchpad

Problemi correlati