Vinnaren i pepparkakshustävlingen!
2018-03-23, 11:54
  #1
Medlem
Caffos avatar
Jag har precis börjat lära mig grunderna till regular expressions. I detta exemplet försöker jag hitta Emails. Jag vet redan att det finns effektivare sätt att jobba med emails, men jag tänkte att det är ett bra sätt att börja, i.om alla olika sätt att skriva dom på.

Jag vill veta om det finns effektivare sätt att göra en sånhär regular expression, om jag eventuellt har missat nånting att tänka på när jag gjorde denna (fick med så de funkar med subdomains och co.uk-domäner)

Jag tycker det känns som dom flesta regex-mönstrena jag har kollat på är väldigt långa och svåra att förså.

Har ni några invändningar? Mvh

http://www.phpliveregex.com/p/nqU

Kod:
$string "This is my email: This_IsMy_Email.1989@subdomain.gmail.co.uk";
    
$match preg_replace('/(\w+\.?\w*@\w+\.\w+\.?\w*\.?\w*)/''<a href="mailto:$1">$1</a>'$string);
    echo 
$match
Citera
2018-03-23, 14:29
  #2
Moderator
Protons avatar
Citat:
Ursprungligen postat av Caffo
Jag har precis börjat lära mig grunderna till regular expressions. I detta exemplet försöker jag hitta Emails. Jag vet redan att det finns effektivare sätt att jobba med emails, men jag tänkte att det är ett bra sätt att börja, i.om alla olika sätt att skriva dom på.

Jag vill veta om det finns effektivare sätt att göra en sånhär regular expression, om jag eventuellt har missat nånting att tänka på när jag gjorde denna (fick med så de funkar med subdomains och co.uk-domäner)

Jag tycker det känns som dom flesta regex-mönstrena jag har kollat på är väldigt långa och svåra att förså.

Har ni några invändningar? Mvh

http://www.phpliveregex.com/p/nqU

Kod:
$string "This is my email: This_IsMy_Email.1989@subdomain.gmail.co.uk";
    
$match preg_replace('/(\w+\.?\w*@\w+\.\w+\.?\w*\.?\w*)/''<a href="mailto:$1">$1</a>'$string);
    echo 
$match
Har du kollat på http://emailregex.com/ tro? Verkar som om de har nån färdig regex för mail där, samt nån slags grafisk förklaring till denna regex med, kanske kan vara till nån hjälp?
Citera
2018-03-23, 17:21
  #3
Medlem
Citat:
Ursprungligen postat av Caffo
Jag har precis börjat lära mig grunderna till regular expressions. I detta exemplet försöker jag hitta Emails. Jag vet redan att det finns effektivare sätt att jobba med emails, men jag tänkte att det är ett bra sätt att börja, i.om alla olika sätt att skriva dom på.

Jag vill veta om det finns effektivare sätt att göra en sånhär regular expression, om jag eventuellt har missat nånting att tänka på när jag gjorde denna (fick med så de funkar med subdomains och co.uk-domäner)

Jag tycker det känns som dom flesta regex-mönstrena jag har kollat på är väldigt långa och svåra att förså.

Har ni några invändningar? Mvh

http://www.phpliveregex.com/p/nqU

Kod:
$string "This is my email: This_IsMy_Email.1989@subdomain.gmail.co.uk";
    
$match preg_replace('/(\w+\.?\w*@\w+\.\w+\.?\w*\.?\w*)/''<a href="mailto:$1">$1</a>'$string);
    echo 
$match
Den klarar inte av om man har fler än en punkt framför @. Ex. 1.2.3@gmail.com
Bakom @ så blir det problem om man har fler än 3 punkter. Ex. 1.2.3@host.host.host.host.com
Citera
2018-03-23, 18:22
  #4
Medlem
Om du är intresserad av hur en e-postadress kan se ut bör du läsa bland annat RFC 5321 och RFC 5322.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback