Oznámení
RegExp.Patterns.php – výraz pro email
před 12 lety
- odvarko
- Člen | 8
RegExp.Patterns.php
define('TEXY_EMAIL', '[a-z0-9.+_-]+@[a-z0-9.+_-]+\.[a-z]{2,}'); // name@exaple.com
Zkus si otestovat rychlost tohodle výrazu na následujícím vzorku (a on nemusí být ani tak dlouhý):
str_repeat('abc_def', 5000)
Kdybys ve výrazu omezil počet znaků, myslím že se zpracování velmi zrychlí. Na mém formátovači bylo po podobné úpravě zrychlení obrovské, vlastně to do té doby byl nejpomalejší článek.
Bohužel už nemám zdroj, ale max. délka e-mailové adresy má být 64 + 1
+ 255 (64=uživatelská část, 1=zavináč, 255=doména).
Zároveň nejdelší top-level domény jsou šestiznakové. Když se tahle
pravidla spojí, mělo by to dát cosi jako:
define('TEXY_EMAIL', '[a-z0-9.+_-]{1,64}@[a-z0-9.+_-]{1,252}\.[a-z]{2,6}'); // name@exaple.com
252 znaků = 255 – 3 (proto, že se nepočítá top-level doména na konci, která bude mít s tečkou nejméně tři znaky)
před 12 lety
- David Grudl
- Nette Core | 6806
Dobrý tip, díky!
před 12 lety
- Acci
- Člen | 83
odvarko: A jak je to potom s doménami třetího řádu?
před 12 lety
- odvarko
- Člen | 8
Acci psal:
A jak je to potom s doménami třetího řádu?
Nuže, domény třetího řádu se mají zrovnatak vtěsnat do těch 255 znaků. To jsem si domyslel a věřím že je to správně.
Cituji RFC 2821, 4.5.3.1 Size limits and minimums
local-part The maximum total length of a user name or other local-part is 64 characters. domain The maximum total length of a domain name or number is 255 characters.
před 12 lety
- markus
- Člen | 11
define('TEXY_EMAIL', '[a-z0-9.+_-]{1,64}@[a-z0-9.+_-]{1,252}\.[a-z]{2,6}'); // name@exaple.com
This regexp is true even for emails like …___-----_@._-._-._-._-._-._-.zzzyyy
Isn't it an insanity?
Editoval markus (3. 10. 2007 15:02)
před 12 lety
- odvarko
- Člen | 8
This regexp is true even for emails like …___-----_@._-._-._-._-._-._-.zzzyyy
Isn't it an insanity?
This seems rather like validation, and e-mail validation is (IMHO) not the goal of Texy. Handling just absolutely valid e-mails claims a long (and slow) regular expression. It is possible, of course, to make the regexp more and more complex, but when is the best time to say stop? There are thousands of awfully long regexps just for „strict“ e-mail matching, but I don't think it is necessary to build such ones into Texy. Let David correct me if I'am wrong.