webForumDet fria alternativet

Regexp (igen)

8 svar · 238 visningar · startad av hopparn

hopparnMedlem sedan nov. 20011 551 inlägg
#1

Kan någon duktig människa förbarma sig över min lilla epostvalidering?

den funkar bra förutom att man inte kan ha subdomäner i eposten, det går alltså bara att ha t ex @mindomän.se och inte @minsub.mindomän.se, jag skulle vilja ha in möjlighet till fler punkter men vet ej hur jag gör...

			if (!Regex.Match(ContactEmail.Text, @"^[a-zA-Z0-9][a-zA-Z0-9_.-]*@([a-zA-Z0-9][a-zA-Z0-9_-]*[a-zA-Z0-9]|[a-zA-Z0-9][[a-zA-Z0-9_-]*\.[a-zA-Z0-9]*]*[a-zA-Z0-9]|[a-zA-Z0-9])\.[a-zA-Z]{2,4}$").Success)

tack på förhand

Hoppis

NETworkMedlem sedan juni 20011 732 inlägg
#2

Hjälp! ;) Prova den här istället:

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
hopparnMedlem sedan nov. 20011 551 inlägg
#3

hmm, men då kan man ju ha med å, ä och ö och det är därför jag har lagt upp den som jag har i exemplet =)

developerMedlem sedan aug. 2001458 inlägg
#4

Jag tycker du gör en onödigt hård validering. Man kan ju i vilket fall skriva in en domän som inte finns. Gör det enkelt för dig istället.

En annan sak, för prestanda tycker jag du borde fundera på att skapa en instans av Regex med RegexOptions.Compiled och återanvända denna, eftersom det är ganska kostsamt som du gör nu.

hopparnMedlem sedan nov. 20011 551 inlägg
#5

...om du ser vad folk fyller i för epostadresser till oss skulle du förstå... missförstå mig inte, folk VILL skriva in sin epost då det är den som är login för att hämta sina betalda produkter... men heter man lars-åke månsson och jobbar på tälje kommun får jag i hälften av fallen in lars-åke.månsson@tälje .se för att datavanan inte är "på topp"

Suck... om jag bara kunde få det efter @ till att bli "ovaliderat" i alla fall, testade med denna men fick den inte heller att funka riktigt:

if (!Regex.Match(ContactEmail.Text, @"^[a-zA-Z0-9][a-zA-Z0-9_.-]*@([\\w-]+\\.)+[\\w-]+").Success)

NETworkMedlem sedan juni 20011 732 inlägg
#6

Eftersom du ändå har din regexp serverside så kan du väl bara köra igenom adressen och kolla om det finns några förekomster av å,ä,ö. Kan göras på en mängd olika sätt, exempelvis med IndexOfAny. Eller bara dundra på med en replacefunktion som byter ut alla å,ä,ö mot a,a,o.

hopparnMedlem sedan nov. 20011 551 inlägg
#7

ingen dum ide, skall prova det i stället =)
tackar

developerMedlem sedan aug. 2001458 inlägg
#8

hopparn skrev:

...om du ser vad folk fyller i för epostadresser till oss skulle du förstå...

Du har en poäng. Har du sett denna? http://www.codeproject.com/useritems/RFC822Validator.asp

hopparnMedlem sedan nov. 20011 551 inlägg
#9

tackar, ser intressant ut =)

128 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)