Avatar billede kjeldsted Novice
11. marts 2008 - 18:44 Der er 8 kommentarer og
1 løsning

Fejl i preg_match.

Hej alle.

Jeg har et lille problem med preg_match() funktionen. Jeg kan ikke forstå hvorfor rækken [a-zA-Z01] virker mens [a-zA-Z012] og [a-zA-Z0-9] ikke gør!:
$pattern="/([a-zA-Z01]+)@([a-z0-9]+)\.([a-z+])/";
$phpPattern="#$pattern#";
$mail="jen#s2@kjeldsted.dk";
if (preg_match($pattern, $mail)) {
    echo "Dette er en mail.:".$mail."<br>";
} else {
    echo "Dette er IKKE en mail.:".$mail."<br>";
}

Udskriver "Dette er IKKE en mail..." (som den skal)

Mens:
$pattern="/([a-zA-Z012]+)@([a-z0-9]+)\.([a-z+])/";
$phpPattern="#$pattern#";
$mail="jen#s2@kjeldsted.dk";
if (preg_match($pattern, $mail)) {
    echo "Dette er en mail.:".$mail."<br>";
} else {
    echo "Dette er IKKE en mail.:".$mail."<br>";
}

Udskriver "Dette er en mail" (som den ikke skal da '#' hverken er et bogstav eller et tal).

Håber der er nogle der kan hjælpe.
Avatar billede jakobdo Ekspert
11. marts 2008 - 19:12 #1
Det er fordi du tjekker om der er et match.
Og det er der.
Den matcher: s2@kjeldsted.dk
Hvilket den ikke gør i kode 1.

Du skal derfor tilføje:

^ foran starten ([a-z.... og $ efter (a-z+)
^ betyder match af start og $ betyder match af en slutning.
Avatar billede jakobdo Ekspert
11. marts 2008 - 19:14 #2
Den ville ikke være korrekt, men du skal nok bruge noget i stil med:
^([a-zA-Z0-9]+)@([a-z0-9]+)\.([a-z+]+)$
Avatar billede jakobdo Ekspert
11. marts 2008 - 19:14 #3
Og hvad er der galt med:
jakob.olsen@dk.eksperten.com ??
Avatar billede kjeldsted Novice
11. marts 2008 - 19:15 #4
Altså så der står
$pattern="/^([a-zA-Z012]+)$@([a-z0-9]+)\.([a-z+])/";
Eller hvordan?
Avatar billede kjeldsted Novice
11. marts 2008 - 19:16 #5
Og, ja, ja... Jeg ved også godt at der også skal være '.' i mængden...
Avatar billede kjeldsted Novice
11. marts 2008 - 19:26 #6
Hov. Overså dit andet svar. Men det tyder på det virker. Så smid et svar hvis nogle point er tiltrækkende...
Avatar billede jakobdo Ekspert
11. marts 2008 - 19:36 #7
Svar!
Avatar billede kjeldsted Novice
11. marts 2008 - 19:39 #8
Og nu hedder den $pattern="/^([a-zA-Z0-9\.\-\_]+)@([a-zA-Z0-9\.\-\_]+)\.([a-zA-Z+]+)$/"; så '.', '-', '_' kan også bruges nu.. Men i følge http://www.eksperten.dk/spm/823252 er dette altså ikke nok? Hm. Pokkers. Nå... Så må jeg udvide rækken lidt.
Avatar billede jakobdo Ekspert
11. marts 2008 - 20:26 #9
Takker for point. :o)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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