|
|||||||
|
|
|
![]() |
|
|
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 "[email protected]" mi scrive nella textbox solo mario.rossi mentre se metto qualche altro carattere (che ne so... "<[email protected]>") 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 <[email protected]> oppure "[email protected]"... 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
' <[email protected]>
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: 16:03.



















