nazarpunk/email-address
最新稳定版本:1.0.6
Composer 安装命令:
composer require nazarpunk/email-address
包简介
Email address parse and sanitize.
README 文档
README
Многие разработчики испытывают трудности с валидацией email. Одни просто используют RegExp, другие отказываются от проверок, третьи рисуют таблицы.
Немного философии
Электронная почта прошла большой путь, который оставил на ней свои следы. Но зачастую, поддерживать весь функционал электронных адресов не требуется. В большинстве своём, пользователи пользуются почтовыми сервисами. Посему здравой идеей будет плясать от них.
Поэтому проверка будет очень проста:
- очищаем строку от пробело
- разбиваем по @ на две части
- по доменной части проверяем оставшуюся строку
- если поставщик не найдек, поступаем по вкусу
Что может пойти не так?
Точка
У некоторых почтовых сервисов, есть интересная особенность - не значащие точки. Тобишь example@gmail.com и e.x.a.m.p.l.e@gmail.com это один и тот же адрес.
Соотвественно, если пользователь зарегестрирует несколько аккаунтов, а потом решить привязать oauth, то может быть очень весело.
Плюс
У некоторых почтовых сервисов, есть интересная особенность - игнорировать всё после знака +. Тобишь example@gmail.com и example+spam@gmail.com это один и тот же адрес.
Соотвественно, если пользователь зарегестрирует несколько аккаунтов, а потом решить привязать oauth, то может быть очень весело.
Домены
Некоторые почтовые сервисы, игрнорирую разницу в доменах. Тобишь example@gmail.com и example@googlemail.com это один и тот же адрес.
Соотвественно, если пользователь зарегестрирует несколько аккаунтов, а потом решить привязать oauth, то может быть очень весело.
Очень умные пользователи
Поднять свой сервер или использовать одноразовые почтовики не составляет большого труда. Посему неизбежно возникнут проблемы с полностью валидными адресами такого формата.
"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334]
Но эта проблема выходит за рамки данной статьи, так что продолжим.
Формат адреса
Отбросив домен, у нас осталась пользовательская часть, которую нужно проверить исходя из допустимого формата самих сервисов. Можно пойди двумя путями:
- Собрать максимально свободную регулярку и не мучаться.
- Или, чтоб не слать байты по заведомо не валидному адресу, проверить каждую запрещённую последовательность основываясь на таблице.
Как поступать решать вам, а таблица собственно приведена ниже.
minминимальная длиннаmaxмаксимальная длиннаcharsдопустимые символыfirstдопустимый первый символlastдопустимый последний символ!.удалять ли точку при проверке..разрешена ли последовательность из двух точек._могут ли символы.и_находиться рядом.-** могут ли символы . и - находиться рядом.0может ли точка соседствовать с цифрой__разрешена ли последовательность из двух__-могут ли символы_и-находиться рядом--разрешена ли последовательность из двух-.+может ли в строке быть больше одной точки+игнорировать ли всё, что после знака+lколичество не буквенных символов, после которого требуется минимум одна букваtтестировались ли данные руками
| min | max | chars | first | last | !. | .. | ._ | .- | .0 | __ | _- | -- | .+ | + | l | t | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| aol | 3 | 32 | a-z0-9._ | a-z | a-z0-9 | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ||||
| fastmail | 1 | 32 | a-z0-9_ | a-z | a-z0-9_ | ✅ | ✅ | ✅ | |||||||||
| gmx | 3 | 40 | a-z0-9._- | a-z0-9 | a-z0-9 | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | |
| 6 | 30 | a-z0-9. | a-z0-9 | a-z0-9 | ✅ | ❌ | ✅ | ✅ | ✅ | 8 | ✅ | ||||||
| hey | 2 | 64 | a-z0-9. | a-z0-9 | a-z0-9 | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ||||||
| hush | 1 | 45 | a-z0-9._- | a-z0-9 | a-z0-9 | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | |
| icloud | 3 | 20 | a-z0-9._ | a-z | a-z0-9 | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ||||
| lycos | 1 | 32 | a-z0-9._- | a-z | a-z0-9 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | |
| mail_com | 3 | 40 | a-z0-9._- | a-z0-9 | a-z0-9 | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | 3 | ✅ |
| mail_ru | 5 | 31 | a-z0-9._- | a-z0-9 | a-z0-9 | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | |
| mailfence | 4 | 40 | a-z0-9._- | a-z0-9_ | a-z0-9_- | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| meta_ua | 1 | 32 | a-z0-9._- | a-z | a-z0-9 | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | |
| microsoft | 1 | 64 | a-z0-9._- | a-z | a-z0-9_- | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| online_ua | 1 | 32 | a-z0-9.- | a-z0-9 | a-z0-9 | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ||||
| posteo | 3 | 60 | a-z0-9._- | a-z0-9 | a-z0-9_- | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | |
| protonmail | 1 | 40 | a-z0-9._- | a-z0-9 | a-z0-9 | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | |
| rambler | 3 | 32 | a-z0-9._- | a-z0-9 | a-z0-9 | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | |
| skiff | 1 | 30 | a-z0-9. | a-z0-9 | a-z0-9 | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ||||||
| tutanota | 3 | 64 | a-z0-9._- | a-z0-9_ | a-z0-9_- | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | |
| ukr_net | 1 | 32 | a-z0-9._- | a-z0-9_- | a-z0-9_- | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| vk | 5 | 31 | a-z0-9._- | a-z0-9 | a-z0-9 | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | |
| yahoo | 4 | 32 | a-z0-9._ | a-z | a-z0-9 | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ||||
| yandex | 1 | 30 | a-z0-9.- | a-z | a-z0-9 | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ |
Домены
dпривязаны ли все домены к одному аккаунту
| d | ||
|---|---|---|
| aol | ❌ | aol.com |
| fastmail | ❌ | fastmail.com |
| fastmail.cn | ||
| fastmail.co.uk | ||
| fastmail.com.au | ||
| fastmail.de | ||
| fastmail.es | ||
| fastmail.fm | ||
| fastmail.fr | ||
| fastmail.im | ||
| fastmail.in | ||
| fastmail.jp | ||
| fastmail.mx | ||
| fastmail.net | ||
| fastmail.nl | ||
| fastmail.org | ||
| fastmail.se | ||
| fastmail.to | ||
| fastmail.tw | ||
| fastmail.uk | ||
| fastmail.us | ||
| sent.com | ||
| gmx | ❌ | gmx.com |
| gmx.us | ||
| ✅ | gmail.com | |
| googlemail.com | ||
| hey | ❌ | hey.com |
| hush | ❌ | hush.ai |
| hush.com | ||
| hushmail.com | ||
| hushmail.me | ||
| mac.hush.com | ||
| icloud | ❌ | icloud.com |
| lycos | ❌ | lycos.com |
| mail_com | ❌ | mail.com |
| email.com | ||
| usa.com | ||
| myself.com | ||
| consultant.com | ||
| post.com | ||
| europe.com | ||
| asia.com | ||
| iname.com | ||
| writeme.com | ||
| dr.com | ||
| engineer.com | ||
| cheerful.com | ||
| accountant.com | ||
| activist.com | ||
| adexec.com | ||
| allergist.com | ||
| alumni.com | ||
| alumnidirector.com | ||
| appraiser.net | ||
| archaeologist.com | ||
| arcticmail.com | ||
| artlover.com | ||
| asia.com | ||
| auctioneer.net | ||
| bartender.net | ||
| bikerider.com | ||
| birdlover.com | ||
| brew-meister.com | ||
| cash4u.com | ||
| chef.net | ||
| chemist.com | ||
| clubmember.org | ||
| collector.org | ||
| columnist.com | ||
| comic.com | ||
| computer4u.com | ||
| consultant.com | ||
| contractor.net | ||
| coolsite.net | ||
| counsellor.com | ||
| cyberservices.com | ||
| deliveryman.com | ||
| diplomats.com | ||
| disposable.com | ||
| dr.com | ||
| engineer.com | ||
| execs.com | ||
| fastservice.com | ||
| financier.com | ||
| fireman.net | ||
| gardener.com | ||
| geologist.com | ||
| graduate.org | ||
| graphic-designer.com | ||
| groupmail.com | ||
| hairdresser.net | ||
| homemail.com | ||
| hot-shot.com | ||
| instruction.com | ||
| instructor.net | ||
| insurer.com | ||
| job4u.com | ||
| journalist.com | ||
| legislator.com | ||
| lobbyist.com | ||
| minister.com | ||
| musician.org | ||
| myself.com | ||
| net-shopping.com | ||
| optician.com | ||
| orthodontist.net | ||
| pediatrician.com | ||
| photographer.net | ||
| physicist.net | ||
| planetmail.com | ||
| planetmail.net | ||
| politician.com | ||
| post.com | ||
| presidency.com | ||
| priest.com | ||
| programmer.net | ||
| publicist.com | ||
| qualityservice.com | ||
| radiologist.net | ||
| realtyagent.com | ||
| registerednurses.com | ||
| repairman.com | ||
| representative.com | ||
| rescueteam.com | ||
| salesperson.net | ||
| secretary.net | ||
| socialworker.net | ||
| sociologist.com | ||
| solution4u.com | ||
| songwriter.net | ||
| surgical.net | ||
| teachers.org | ||
| tech-center.com | ||
| techie.com | ||
| technologist.com | ||
| theplate.com | ||
| therapist.net | ||
| toothfairy.com | ||
| tvstar.com | ||
| umpire.com | ||
| webname.com | ||
| worker.com | ||
| workmail.com | ||
| writeme.com | ||
| 2trom.com | ||
| activist.com | ||
| aircraftmail.com | ||
| artlover.com | ||
| bikerider.com | ||
| birdlover.com | ||
| blader.com | ||
| boardermail.com | ||
| brew-master.com | ||
| brew-meister.com | ||
| bsdmail.com | ||
| catlover.com | ||
| chef.net | ||
| clubmember.org | ||
| collector.org | ||
| cutey.com | ||
| dbzmail.com | ||
| doglover.com | ||
| doramail.com | ||
| galaxyhit.com | ||
| gardener.com | ||
| greenmail.net | ||
| hackermail.com | ||
| hilarious.com | ||
| keromail.com | ||
| kittymail.com | ||
| linuxmail.org | ||
| lovecat.com | ||
| marchmail.com | ||
| musician.org | ||
| nonpartisan.com | ||
| petlover.com | ||
| photographer.net | ||
| snakebite.com | ||
| songwriter.net | ||
| techie.com | ||
| theplate.com | ||
| toke.com | ||
| uymail.com | ||
| computer4u.com | ||
| consultant.com | ||
| contractor.net | ||
| coolsite.net | ||
| cyberdude.com | ||
| cybergal.com | ||
| cyberservices.com | ||
| cyber-wizard.com | ||
| engineer.com | ||
| fastservice.com | ||
| graphic-designer.com | ||
| groupmail.com | ||
| homemail.com | ||
| hot-shot.com | ||
| housemail.com | ||
| humanoid.net | ||
| iname.com | ||
| inorbit.com | ||
| mail-me.com | ||
| myself.com | ||
| net-shopping.com | ||
| null.net | ||
| physicist.net | ||
| planetmail.com | ||
| planetmail.net | ||
| post.com | ||
| programmer.net | ||
| qualityservice.com | ||
| rocketship.com | ||
| solution4u.com | ||
| tech-center.com | ||
| techie.com | ||
| technologist.com | ||
| webname.com | ||
| workmail.com | ||
| writeme.com | ||
| acdcfan.com | ||
| artlover.com | ||
| chemist.com | ||
| diplomats.com | ||
| discofan.com | ||
| elvisfan.com | ||
| execs.com | ||
| hiphopfan.com | ||
| housemail.com | ||
| kissfans.com | ||
| madonnafan.com | ||
| metalfan.com | ||
| minister.com | ||
| musician.org | ||
| ninfan.com | ||
| ravemail.com | ||
| reborn.com | ||
| reggaefan.com | ||
| snakebite.com | ||
| songwriter.net | ||
| bellair.net | ||
| californiamail.com | ||
| dallasmail.com | ||
| nycmail.com | ||
| pacific-ocean.com | ||
| pacificwest.com | ||
| sanfranmail.com | ||
| usa.com | ||
| africamail.com | ||
| arcticmail.com | ||
| asia.com | ||
| asia-mail.com | ||
| australiamail.com | ||
| berlin.com | ||
| brazilmail.com | ||
| chinamail.com | ||
| dublin.com | ||
| dutchmail.com | ||
| englandmail.com | ||
| europe.com | ||
| europemail.com | ||
| germanymail.com | ||
| irelandmail.com | ||
| israelmail.com | ||
| italymail.com | ||
| koreamail.com | ||
| mexicomail.com | ||
| moscowmail.com | ||
| munich.com | ||
| polandmail.com | ||
| safrica.com | ||
| samerica.com | ||
| scotlandmail.com | ||
| spainmail.com | ||
| swedenmail.com | ||
| swissmail.com | ||
| torontomail.com | ||
| angelic.com | ||
| atheist.com | ||
| disciples.com | ||
| innocent.com | ||
| minister.com | ||
| muslim.com | ||
| priest.com | ||
| protestant.com | ||
| reborn.com | ||
| reincarnate.com | ||
| religious.com | ||
| saintly.com | ||
| mail_ru | ❌ | mail.ru |
| internet.ru | ||
| bk.ru | ||
| inbox.ru | ||
| list.ru | ||
| mailfence | ❌ | mailfence.com |
| meta_ua | ❌ | meta.ua |
| microsoft | ❌ | outlook.com |
| hotmail.com | ||
| online_ua | ❌ | online.ua |
| posteo | ❌ | posteo.at |
| posteo.be | ||
| posteo.ca | ||
| posteo.ch | ||
| posteo.cl | ||
| posteo.co | ||
| posteo.co.uk | ||
| posteo.com.br | ||
| posteo.cr | ||
| posteo.cz | ||
| posteo.de | ||
| posteo.dk | ||
| posteo.ee | ||
| posteo.es | ||
| posteo.eu | ||
| posteo.fi | ||
| posteo.gl | ||
| posteo.gr | ||
| posteo.hn | ||
| posteo.hr | ||
| posteo.hu | ||
| posteo.ie | ||
| posteo.in | ||
| posteo.is | ||
| posteo.it | ||
| posteo.jp | ||
| posteo.la | ||
| posteo.li | ||
| posteo.lt | ||
| posteo.lu | ||
| posteo.me | ||
| posteo.mx | ||
| posteo.my | ||
| posteo.net | ||
| posteo.nl | ||
| posteo.no | ||
| posteo.nz | ||
| posteo.org | ||
| posteo.pe | ||
| posteo.pl | ||
| posteo.pm | ||
| posteo.pt | ||
| posteo.ro | ||
| posteo.se | ||
| posteo.sg | ||
| posteo.si | ||
| posteo.tn | ||
| posteo.uk | ||
| posteo.us | ||
| protonmail | ❌ | proton.me |
| protonmail.com | ||
| rambler | ❌ | ro.ru |
| r0.ru | ||
| rambler.ru | ||
| rambler.ua | ||
| autorambler.ru | ||
| myrambler.ru | ||
| skiff | ❌ | skiff.com |
| tutanota | ❌ | tutanota.com |
| tutanota.de | ||
| tutamail.com | ||
| tuta.io | ||
| keemail.me | ||
| ukr_net | ❌ | ukr.net |
| vk | ❌ | vk.com |
| yahoo | ❌ | yahoo.com |
| ymail.com | ||
| rocketmail.com | ||
| yandex | ✅ | ya.ru |
| yandex.ru | ||
| yandex.by | ||
| yandex.com | ||
| yandex.kz | ||
| narod.ru |
统计信息
- 总下载量: 14
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-08-15