Кратко
При регистрации пользователей часто используются регулярные выражения электронной почты/почтовых адресов. В этой статье перечислены несколько вариантов, вы можете выбрать наиболее подходящий в соответствии с ситуацией вашего проекта.
Вариант 1 (обычно используется)
Правила определяются следующим образом:
- Начните с прописных букв [AZ], строчных букв [az], цифр [0-9], символов подчеркивания [_], знаков минус [-] и точек [.], и их необходимо повторить один или несколько раз [+] .
- Должен включать символ @ в середине.
- После @ нужно соединить прописные буквы [AZ], строчные буквы [az], цифры [0-9], символы подчеркивания [_], знаки минус [-] и точки [.], и нужно повторить один или несколько раз [+] .
- В конце должна быть точка [.], соединенная от 2 до 4 прописных и строчных букв [A-Za-z]{2,4}.
Использование приведенных выше правил дает следующее регулярное выражение:
var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
Результаты теста:
pattern.test('cn42du@163.com') = true;
pattern.test('ifat3@sina.com.cn') = true;
pattern.test('ifat3.it@163.com') = true;
pattern.test('ifat3_-.@42du.cn') = true;
pattern.test('ifat3@42du.online') = false;
pattern.test('毛三胖@42du.cn') = false;
Исходный код и демонстрационный адрес
Сценарий 1 Описание
Схема 1 — это наиболее часто используемая схема проверки регулярного выражения электронной почты, которая также подходит для большинства сценариев приложений. Из приведенного выше теста видно, что выражение не поддерживает доменные имена, оканчивающиеся на .online и .store. Чтобы быть совместимым с этим типом доменного имени (более 4 цифр), измените обычное окончание{2,4}
Ограниченная часть{2,8}
). Другая проблема заключается в том, что имя пользователя электронной почты не может включать китайский язык.
Вариант 2 (вариант поправки 1)
Правила добавляются следующим образом:
- Имя пользователя может включать китайский [\u4e00-\u9fa5]
- Доменные имена могут заканчиваться до 8 символов {2,8}.
Обновлено регулярное выражение следующим образом:
var pattern = /^([A-Za-z0-9_\-\.\u4e00-\u9fa5])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$/;
Результаты теста:
pattern.test('cn42du@163.com') = true;
pattern.test('ifat3@sina.com.cn') = true;
pattern.test('ifat3.it@163.com') = true;
pattern.test('ifat3_-.@42du.cn') = true;
pattern.test('ifat3@42du.online') = true;
pattern.test('毛三胖@42du.cn') = true;
Исходный код и демонстрационный адрес
Сценарий 3 (Безопасность)
До появления проверочного кода мобильного телефона единственным условием обеспечения уникальности пользователя была практически проверка по электронной почте. Появление временных почтовых ящиков (также известных как 10-минутные почтовые ящики или одноразовые почтовые ящики) делает бессмысленным механизм проверки почтового ящика и активации учетной записи. Адрес временного почтового ящика нельзя перечислить, мы можем использовать только метод белого списка и позволить пройти проверку только ограниченному количеству доменных имен почтовых ящиков.
Согласно Варианту 1 добавляются следующие правила:
- Имя домена электронной почты может быть только 163.com, qq.com или 42du.cn.
Регулярное выражение задается следующим образом:
var pattern = /^([A-Za-z0-9_\-\.])+\@(163.com|qq.com|42du.cn)$/;
Результаты теста:
pattern.test('cn42du@163.com') = true;
pattern.test('ifat3@sina.com.cn') = false;
pattern.test('ifat3.it@163.com') = true;
pattern.test('ifat3_-.@42du.cn') = true;
pattern.test('ifat3@42du.online') = false;
pattern.test('毛三胖dd@42du.cn') = false;
Исходный код и демонстрационный адрес
Хотя проверка по схеме 3 может обеспечить безопасность, если белый список слишком длинный, строка шаблона будет слишком длинной. В настоящее время вы можете написать белый список доменных имен электронной почты в виде массива, использовать регулярные выражения для предварительной проверки и использовать белый список для вторичной проверки доменных имен.
Теперь дайте функцию проверки почтового ящика следующим образом:
var isEmail = function (val) {
var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
var domains= ["qq.com","163.com","vip.163.com","263.net","yeah.net","sohu.com","sina.cn","sina.com","eyou.com","gmail.com","hotmail.com","42du.cn"];
if(pattern.test(val)) {
var domain = val.substring(val.indexOf("@")+1);
for(var i = 0; i< domains.length; i++) {
if(domain == domains[i]) {
return true;
}
}
}
return false;
}
// 输出 true
isEmail("cn42du@163.com");
Приведенная выше функция isEmail() перечисляет 11 часто используемых доменных имен электронной почты, и вы можете добавлять или удалять их по мере необходимости.
Вышеупомянутое понимание и анализ San Pang регулярных выражений адресов электронной почты.Если есть какие-либо недостатки, пожалуйста, поправьте меня.
Регулярное выражение адреса электронной почты — пробел 42 градуса