Avatar billede slapstick Nybegynder
22. februar 2005 - 16:08 Der er 12 kommentarer og
1 løsning

validere email med regular expression

nogen der har et eksempel på at validere en emailadresse med reg exp?
Avatar billede davidfossil Nybegynder
22. februar 2005 - 16:09 #1
Det kan jo gøres på mange forskellige måder. Jeg bruger denne:
^([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})(\]?)$

Temmelig lang, men ret præcis :)
Avatar billede slapstick Nybegynder
22. februar 2005 - 16:11 #2
ok jeg har det her match: \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
som gerne skulle virke men det er nu mere resten af koden der skal til
det er min dag nr to jeg roder med C# nemlig hehehe
Avatar billede arne_v Ekspert
22. februar 2005 - 16:35 #3
Prøv og set det her eksempel:

import java.util.regex.*;

public class AddressTest {
  private static Pattern p = Pattern.compile("((\\w+)|(\\w+\\.\\w+))@((\\w+\\.\\w+)|(\\w+\\.\\w+\\.\\w+)|(\\w+\\.\\w+\\.<w+\\.\\w+))");
  public static boolean validEmail(String addr) {
      return p.matcher(addr).matches();
  }
  public static void main(String[] args) throws Exception {
      System.out.println(validEmail("x"));
      System.out.println(validEmail("x@x"));
      System.out.println(validEmail("x@x.x"));
      System.out.println(validEmail("x@x.x.x"));
      System.out.println(validEmail("x.x@x.x.x"));
      System.out.println(validEmail("x.x.x@x.x.x.x"));
  }
}
Avatar billede arne_v Ekspert
22. februar 2005 - 16:36 #4
regex udtrykket skal nok udskiftet med validEMail metoden må kunne bruges.
Avatar billede askhoej Praktikant
22. februar 2005 - 16:43 #5
et hurtigt bud hvor jeg ikke er sikker på det regulære udtryk holder helt :-)

string Email = "test@test.com";

//Validate if email is velformed
Regex r = new Regex("^[\\w\\.\\-_]+@([\\w\\.\\-_]+\\.)+[A-Za-z]{2,4}$");
Match m = r.Match(Email);
if(!m.Success)
{
  lblError.Text = "not valid";
}
else
{
  lblError.Text = "valid";
}

husk using System.Text.RegularExpressions;

/askhoej
Avatar billede slapstick Nybegynder
22. februar 2005 - 16:48 #6
hmm når jeg prøver enten min egen match ting eller davidfossils så får jeg bare den her fejl:

C:\Inetpub\wwwroot\BackWeb\BackWeb.asmx.cs(105): Unrecognized escape sequence

kodelinien ser sådan her ud :
Regex r = new Regex("^([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})(\]?)$");
Avatar billede arne_v Ekspert
22. februar 2005 - 16:49 #7
Som vist i mit eksempel skal \ dubleres (eller du skal prefixe strengen med @)
Avatar billede slapstick Nybegynder
22. februar 2005 - 16:54 #8
aaah ok hehe tak
Avatar billede slapstick Nybegynder
23. februar 2005 - 10:06 #9
arne smid et svar så får du point
Avatar billede arne_v Ekspert
23. februar 2005 - 10:22 #10
ok
Avatar billede Syska Mester
26. februar 2005 - 01:34 #11
import java.util.regex.*; hehehe, arne, det er vist en C# kategori, og ikke java, men okay, det virker jo
Avatar billede arne_v Ekspert
26. februar 2005 - 14:34 #12
:-)

Det er vist gået lidt hurtigt da jeg svarede her.

C# varianten er:

using System;
using System.Text.RegularExpressions;

class MainClass
{
    public static bool ValidEmail(string s) {
        return Regex.IsMatch(s, "((\\w+)|(\\w+\\.\\w+))@((\\w+\\.\\w+)|(\\w+\\.\\w+\\.\\w+)|(\\w+\\.\\w+\\.\\w+\\.\\w+))");
    }
    public static void Main(string[] args)
    {
        Console.WriteLine(ValidEmail("x"));
        Console.WriteLine(ValidEmail("x@x"));
        Console.WriteLine(ValidEmail("x@x.x"));
        Console.WriteLine(ValidEmail("x@x.x.x"));
        Console.WriteLine(ValidEmail("x.x@x.x.x"));
        Console.WriteLine(ValidEmail("x.x.x@x.x.x.x"));
    }
}
Avatar billede arne_v Ekspert
26. februar 2005 - 14:40 #13
Og i den her variant virker den ligefrem som tiltænkt:

using System;
using System.Text.RegularExpressions;

class MainClass
{
    public static bool ValidEmail(string s) {
        return Regex.IsMatch(s, "^((\\w+)|(\\w+\\.\\w+))@((\\w+\\.\\w+)|(\\w+\\.\\w+\\.\\w+)|(\\w+\\.\\w+\\.\\w+\\.\\w+))$");
    }
    public static void Main(string[] args)
    {
        Console.WriteLine(ValidEmail("x"));
        Console.WriteLine(ValidEmail("x@x"));
        Console.WriteLine(ValidEmail("x@x.x"));
        Console.WriteLine(ValidEmail("x@x.x.x"));
        Console.WriteLine(ValidEmail("x.x@x.x.x"));
        Console.WriteLine(ValidEmail("x.x.x@x.x.x.x"));
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester