Convalida il formato di un indirizzo email usando Jquery.validate.js

Sto usando jquery.validate.js per convalidare l’input e-mail del formulare.

Sta funzionando bene, ma sono sorpreso che sia l’eccezione delle e-mail valide con il seguente formato: nome @ dominio

A mio parere manca un .TLD, no?

Ho controllato la funzione all’interno del file jquery.validate.js. Stanno facendo riferimento alle specifiche di www.whatwg.org per un indirizzo email valido. Sul sito si dice che un indirizzo email valido dovrebbe avere il formato [email protected]

Il JS Regex all’interno di jquery.validate.js è il seguente:

email: function( value, element ) { return this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-][email protected][a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value ); }, 

Come utilizzo un Regex personalizzato che convalida se l’e-mail include un .TLD?

Ho specificato il metodo di convalida personalizzato come segue:

 jQuery.validator.addMethod("customemail", function(value, element) { return this.optional(element) || /^(([^()[\]\\.,;:\[email protected]\"]+(\.[^()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(value); }, "Please enter a valid email address."); 

La funzione per convalidare il modulo è la seguente:

 $("#subscription-form").validate({ }); 

Cosa devo includere, quindi lo script usa il mio metodo personalizzato invece del metodo email?

Prova questo Regex :

 /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/