Gå til innhold

"Korrekt" regulært uttrykk for e-post adresser


Anbefalte innlegg

Jeg holder for øyeblikket på med en funksjon som sjekker oppgitt data fra skjema. I den anledning ønsker jeg å finne et regulært uttrykk som "godkjenner" alle mulige e-post adresser. Jeg har lest litt på Wikipedia at e-post adresser kan inneholde:

    * Uppercase and lowercase letters (case sensitive)

    * The digits 0 through 9

    * The characters ! # $ % & ' * + - / = ? ^ _ ` { | } ~

    * The character . provided that it is not the first or last character in the local-part.

Er dette tilfellet? Og hva med domenet i adressen? Hvordan får jeg godkjent f.eks. eksempel@båt.no og andre domener med slike spesialtegn?

Lenke til kommentar
Videoannonse
Annonse
Jeg bruker vanligvis denne: ^[^@ ()$#><;%*?&+='\{}æøåÆØÅ]+@[^@ ()$#><;%*?&+='\{}æøåÆØÅ]+\.[^@ ()$#><;*%?&+='\{}æøåÆØÅ\.]+$

8524528[/snapback]

Om brukeren er svensk og har adressen eksempel@ödelig.se vil brukeren ikke kunne registrere seg med e-post adressen sin. Ser også at den tillater [^@ ()$#><;*%?&+='\{}æøåÆØÅ\.] etter siste punktum. Man kan vel ikke ha en andresse som [email protected]%m?

Endret av simenss
Lenke til kommentar
Det er ingen måte å sikre seg 100% for at en email faktisk eksisterer, så sant man ikke krever svar fra den.

 

Det jeg gjør er å sjekke at den har et gyldig format:

[email protected].

Validerer mailen denne sjekken, så sendes det en aktiveringsnøkkel til mailen.

8527853[/snapback]

Da bruker vi samme metode ;) Jeg ønsker ikke å validere om e-posten finnes, men om brukeren har brukt riktig format. Jeg trenger et regulært uttrykk som godkjenner alle e-post adresser som kan eksistere.

Lenke til kommentar
Er vel de færreste som har æ, ø og å i domenet?

8529047[/snapback]

Er ikke bare æ, ø og å, men også andre internasjonale tegn som β, ä, ö etc. Det er dumt å nekte brukere å registrere seg fordi de har en litt "uvanlig" e-post adresse.

Endret av simenss
Lenke til kommentar

Hei, endelig hjemme fra jobb.

Gjorde et lite forsøk på det du ønsket:

PHP

<?php

 

$expression '/[a-zA-Z0-9øæåØÆÅ!#$%&`{|}~]+[@]{1}[a-zA-Z0-9æøå]+[.]{1}[a-zA-Z0-9æøå]/';

$email = array('[email protected]','æøå123@hællo.nå','arnæAz_123-å@håttmail.no','æåø123ÆØÅ{-_|@jaha123Aæ.no');

$numMails count($email)-1;

$x 0;

 

while($x $numMails+1) {

if(preg_match($expression,$email[$x])) {

echo "nr ".($x+1)." av ".($numMails+1)." godkjent<br />";

}

$x++;

}

?>

 

Denne gir at alle emailen er gyldige.

Kun testet veldig raskt, så du får si fra hvis den ikke oppfører seg slik du ønsker

 

Edit:

endret uttrykket litt

Endret av MsFoster
Lenke til kommentar
Hei, endelig hjemme fra jobb.

Gjorde et lite forsøk på det du ønsket:

PHP

<?php

 

$expression = '/[a-zA-Z0-9øæåØÆÅ!#$%&`{|}~]+[@]{1}[a-zA-Z0-9æøå]+[.]{1}[a-zA-Z0-9æøå]/';

$email = array('[email protected]','æøå123@hællo.nå','arnæAz_123-å@håttmail.no','æåø123ÆØÅ{-_|@jaha123Aæ.no');

$numMails = count($email)-1;

$x = 0;

 

while($x < $numMails+1) {

    if(preg_match($expression,$email[$x])) {

  echo "nr ".($x+1)." av ".($numMails+1)." godkjent<br />";

    }

    $x++;

}

?>

 

Denne gir at alle emailen er gyldige.

Kun testet veldig raskt, så du får si fra hvis den ikke oppfører seg slik du ønsker

 

Edit:

endret uttrykket litt

8532071[/snapback]

Takk for forsøket, men det hjelper meg ikke med å godkjenne alle mulige adresser som inneholder andre internasjonale tegn som ö, ä, β etc. Har kommet frem til at siden det kanskje er en umulig (og kanskje unødvendig) oppgave å kartlegge alle internasjonale tegn som kan benyttes, bruker jeg følgende uttrykk:

 

preg_match("/^(.*?){2,64}@(.*?){2,59}.[a-z]{2,4}$/", $email)

 

EDIT: Brukeren må selvfølgelig bekrefte e-post adressen for å fullføre registreringen

Endret av simenss
Lenke til kommentar

Hei, dersom flere tegn ønskes så legges dette til inni [], men som sagt, slik jeg fortalte deg i første post, og som du nå bestemte deg for, er beste metoden for å sørge for at det faktisk er en seriøs registrering med eksisterende email.

 

Lykke til :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...