function valida_mail(){ if (isEmail(document.mailinglist.email.value)){ return true; }else{ alert("L'indirizzo inserito non è valido"); return false; } } function isEmail (emailStr) { // Formato user@domain e separazione di reg_username e dominio var emailPat=/^(.+)@(.+)$/ // Pattern per ritrovare i caratteri speciali (non consentiti) var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]" // Caratteri consentiti in reg_username o domainname var validChars="\[^\\s" + specialChars + "\]" // reg_username contenente spazi var quotedUser="(\"[^\"]*\")" // domainName costituito da un indirizzo IP var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/ // Unità 'atomo' ovvero una serie di caratteri non speciali var atom=validChars + '+' // Una 'word' dell'reg_username. L'reg_username può essere costituito da più 'word' // separate da . var word="(" + atom + "|" + quotedUser + ")" // Struttura dell'reg_username var userPat=new RegExp("^" + word + "(\\." + word + ")*$") // Dominio sombolico var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$") // Controllo della sintassi reg_username@domain e separazione dell'reg_username dal // domain var matchArray=emailStr.match(emailPat) if (matchArray==null) { //alert("Email address seems incorrect (check @ and .'s)") return false } var user=matchArray[1] var domain=matchArray[2] // User valido. if (user.match(userPat)==null) { //alert("The reg_username doesn't seem to be valid.") return false } // Indirizzo IP valido (nel caso in cui il domain sia un IP. var IPArray=domain.match(ipDomainPat) if (IPArray!=null) { for (var i=1;i<=4;i++) { if (IPArray[i]>255) { //alert("Destination IP address is invalid!") return false } } return true } // Domain è un nome simbolico var domainArray=domain.match(domainPat) if (domainArray==null) { //alert("The domain name doesn't seem to be valid.") return false } // controllo sulla parte terminale del domain. // Spezzo il domain in 'atomi' var atomPat=new RegExp(atom,"g") var domArr=domain.match(atomPat) var len=domArr.length if ((domArr[domArr.length-1].length<2) || (domArr[domArr.length-1].length>3)) { // alert("The address must end in a three-letter domain, or two letter country.") return false } // Parte terminale del dominio preceduta da un host name. if (len<2) { //var errStr="This address is missing a hostname!" //alert(errStr) return false } return true; }