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)
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.
...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)
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.