Проверка адреса электронной почты в Javascript - PullRequest
3 голосов
/ 24 сентября 2010

Я думаю, что многие люди уже делали несколько похожих задач:

Я хотел бы проверить адрес электронной почты людей, совпадающих только с @ tomtom.com или @ stream.com

В настоящее время у меня есть два решения:

  1. Использование функции indexof()

    var checkTomTomEmail=eo.data.username.indexOf("@tomtom.com");
    var checkStreamEmail=eo.data.username.indexOf("@stream.com");
    
    
    if (checkTomTomEmail >0 || checkStreamEmail >0 )
    {
        //Run the login code
    }
    
    
    Else 
    {
        //Please login with your tomtom or stream email 
    }
    
  2. Использование совпадения

    var patt1=/@tomtom.com/gi;
    var patt2=/@stream.com/gi;
    var checkTomTomEmail=eo.data.username.match(patt1);
    var checkStreamEmail=eo.data.username.match(patt2);
    
    
    if(indexOf(checkTomTomEmail)> 1 ||indexOf (checkStreamEmail)>1)
    {
        //Login 
    }
    

Я все еще думаю, что еще не рассмотрю все детали. Есть предложения?
Спасибо

Ответы [ 2 ]

3 голосов
/ 24 сентября 2010

Возможно, если людям разрешено вводить электронные письма только для этих двух адресов, вам следует только собрать имя пользователя и затем разрешить им выбирать @ tomtom.com или @ stream.com с помощью радиокнопок.

Если вы все еще хотите пойти по пути javascript, тогда ваше регулярное выражение может быть объединено в один оператор

var emailPatt=/@(tomtom|stream).com/gi;

if(emailPatt.test(eo.data.username))
{
    //Login 
}
2 голосов
/ 24 сентября 2010

Как насчет этого ...

var emailRegex = /^([0-9a-z])+@(tomtom|stream)\.com$/ig;
if (emailRegex.test(emailRegex)) {
    // Login
}

Вместо выполнения .match (...) - для которого вы получите строку назад, мы можем выполнить .test (...), чтобы проверить, соответствует ли что-либо.

Этот шаблон гарантирует следующее:

  1. Часть имени пользователя в адресе электронной почты должна содержать как минимум ОДИН символ (например, a@stream.com)
  2. Имя пользователя должно состоять из цифры или алфавита (верхний / нижний регистр - не имеет значения из-за / i в конце)
  3. Входные данные должны содержать полный адрес электронной почты без начальных или конечных пробелов. Например, произойдет сбой «user@tomtom.com», он будет принимать только «user@tomtom.com».)

Вы можете настроить это далее, сказав, что имя пользователя должно содержать не менее 3 символов, вы можете использовать подчеркивание или тире в адресе электронной почты и т. Д.

Чтобы ответить на ваш вопрос, оба решения не будут работать. Причины:

  1. Пользователь может ввести "tom@tomtom.com Hello", и он пройдет обе ваши проверки.
  2. В частности, в решении № 2 точка '.' является зарезервированным Regex символом, это означает, что он будет соответствовать чему угодно, поэтому, если пользователь введет "@ tomtom1com", он пройдет ...

Подробнее о Regex: http://www.regular -expressions.info / reference.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...