|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Aug 2005
Messaggi: 97
|
[.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)...
![]() |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Aug 2005
Messaggi: 97
|
ho trovato qualcosa sulla documentazione di msdn ma ci sono due problemi che dovrei risolvere nella routine che ho fatto col supporto di msdn...:
Codice:
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 ![]() |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Aug 2005
Messaggi: 97
|
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...
Codice:
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? ![]() |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Aug 2005
Messaggi: 97
|
possibile che nessuno riesce a capire cosa non va in questo codice?
![]() ![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Dec 2000
Città: Roma
Messaggi: 943
|
Intanto ti segnalo questo : http://www.regular-expressions.info/
poi mi studio il codice e provo a darti una mano ![]()
__________________
Battletag: Mavel72#2336 |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Dec 2000
Città: Roma
Messaggi: 943
|
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.
__________________
Battletag: Mavel72#2336 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:11.