2012-07-24 14 views
6

Eventuali duplicati:
Validate email address in Javascript?Qual è la meno cattiva espressione regolare per rifiutare definitivamente indirizzi email non validi?

So che non esiste un modo per convalidare un indirizzo di posta elettronica utilizzando solo espressione regolare, ma penso che dovrei essere in grado di respingere alcuni tra quelli ovviamente non validi in per aiutare gli utenti amichevoli che per errore hanno inserito qualcosa di diverso, come il loro nome o la password nel campo dell'indirizzo email. Quindi, non voglio rifiutare alcun indirizzo email valido, ma vorrei rifiutare quanti più formati di e-mail non validi è possibile usando solo una regex. Ma immagino che qualsiasi javascript/jquery/... andrebbe bene anche lui.

Ecco quello che ho finora:

^[email protected]+\..+$ 

Sì, non c'è espressione regolare per la convalida reale, ma ci dovrebbe essere un po 'per il rifiuto. No, questo non impedirà a nessuno di inserire indirizzi falsi. Sì, devi ancora inviare un'email di conferma per convalidare per davvero.

La regex precedente verrà utilizzata da javascript.

-

In .NET Vorrei invece far .NET convalidare il formato e-mail utilizzando

try 
    { 
     var mailAddress = new MailAddress(possibleMailAddress); 
    } 

e se ok verificare i record DNS per la parte del dominio per vedere se ci potrebbe essere un server di posta elettronica. Solo se i record DNS indicano chiaramente che non può esistere un server di posta elettronica o se non esiste un dominio di questo tipo, l'indirizzo di posta elettronica viene rifiutato. Quindi archivia alcuni risultati per velocizzare le ricerche future.

Eppure, devo inviare e-mail di conferma per la convalida ...

+3

Penso che hai un regex ragionevole qui. Sebbene ci siano indirizzi senza punti in essi, probabilmente sono piuttosto rari. –

+0

Sono d'accordo che questa è una regex piuttosto sensata per un sito web pubblico. Potresti anche prendere in considerazione [questa risposta] (http://stackoverflow.com/a/46181/960195) alla domanda relativa, ma non proprio la stessa, "Convalida l'indirizzo email in Javascript?" –

+0

Un sacco di discussioni su vari gradi di controllo utilizzando una regex qui: http://stackoverflow.com/questions/46155/validate-email-ad-ress-in-javascript. Mi sembra una domanda doppia. – jfriend00

risposta

4

Lo standard ufficiale RFC 2822 descrive la sintassi che gli indirizzi email validi con questa espressione regolare:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])