View Full Version : [.Net] RegExp per e-mail
dove trovo una espressione regolare per valutare la sintassi delle e-mail? ho cercato su google ma da quanto ho visto sulle espressioni regolari nel .net framework usando l'oggetto system.text.regularexpression non c'è molto...! ho trovato praticamente di tutto, php, c, javascript... ma per il framework .net niente...! (uso visual studio 2005)... :mc: grazie 1000
ho trovato qualcosa sulla documentazione di msdn ma ci sono due problemi che dovrei risolvere nella routine che ho fatto col supporto di msdn...: Sub SearchMails(ByVal inputString As String)
Dim r As System.Text.RegularExpressions.Regex
Dim m As System.Text.RegularExpressions.Match
r = New System.Text.RegularExpressions.Regex("^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", System.Text.RegularExpressions.RegexOptions.Multiline Or System.Text.RegularExpressions.RegexOptions.IgnoreCase)
m = r.Match(inputString)
While m.Success
ind = ind + 1
TextBox2.Text = TextBox2.Text & "Found email " & m.Groups(1).Value & " at " & m.Groups(1).Index.ToString() & vbCrLf
m = m.NextMatch()
End While
End Sub
il primo è che se passo l'argomento "mario.rossi@gmail.com" mi scrive nella textbox solo mario.rossi mentre se metto qualche altro carattere (che ne so... "<mario.rossi@gmail.com>") non me la trova proprio... come faccio a risolvere? anche un link a un po' di documentazione andrebbe bene perchè quella di msdn è molto confusa :muro:
ho modificato la routine facendo un array in modo che l'e-mail possa essere estratta dal testo in molte forme... tipo <mario.rossi@gmail.com> oppure "mario.rossi@gmail.com"... ma c'è ancora qualcosa che non va...
Imports System.Text.RegularExpressions
Sub SearchMails(ByVal inputString As String)
dim Expression() As Regex
Dim m As Match
' <mario.rossi@gmail.com>
Expression(0) = New Regex("^<([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)>$", RegexOptions.IgnoreCase)
Dim i As Long
For i = 0 To UBound(Expression)
m = Expression(i).Match(inputString)
While m.Success = False
TextBox2.Text = TextBox2.Text & "Found email " & m.Value & " at " & m.Index.ToString & vbCrLf
m = m.NextMatch()
End While
Next i
End Sub
cosa c'è che non va? :muro:
possibile che nessuno riesce a capire cosa non va in questo codice? :muro: :muro: l'errore dovrebbe essere nella dichiarazione dell'array di oggetti regex! non ho mai fatto un'operazione del genere!
Intanto ti segnalo questo : http://www.regular-expressions.info/
poi mi studio il codice e provo a darti una mano ;)
Io lavoro in C#, ho trovato questo codice che sinceramente non mi va di convertire in VB (tanto le differenze sono minime):
public static bool isEmail(string inputEmail)
{
inputEmail = NulltoString(inputEmail);
string strRegex = @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
@"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
@".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
Regex re = new Regex(strRegex);
if (re.IsMatch(inputEmail))
return (true);
else
return (false);
}
Ovviamente questo ti dice se l'e-mail è sintatticamente corretta, non se esiste veramente.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.