Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проверка адреса e-mail на валидность. (http://www.flasher.ru/forum/showthread.php?t=146148)

goldlider 29.10.2010 22:17

Проверка адреса e-mail на валидность.
 
Имеется такая задача:
В переменную email мы присваиваем какой-нить адрес, к примеру (example@timon.com).
Нужно проверить введенный адрес правильно введен, т.е. в адресе должны отсутствовать повторяющийся символ @, повторяющиеся точки, символ @ не должен присутствовать первым или последним, но хотя бы должна присутствовать одна точка и одна собачка.
Недопустимые записи (@example.timon.com, example.timon.com@, exa@mple@.timon.com, example..timon.com).
Все это нужно реализовать с помощью цикла while. С помощью других циклов не нужно.

Вот что у меня получилось, хотя многое неверно:
Код AS3:

var i = 0;
var signEmail:Boolean;
var email = "example@timon.com"
 
while (i < email.length)
{
        if (email.charAt(0) == "@" || email.charAt((email.length)-1) == "@" || (email.charAt(i) == "@" && email.charAt(i+1) == "@") || (email.charAt(i) == "." && email.charAt(i+1)) == "." || sobachka.charAt(i) != "@" || sobachka.charAt(i) != "." )
        {
                signEmail = false;
                trace("Проверьте корректен ли ввод !");
                break;
        }
        else
        {
                signEmail = true;
                trace("Вы правильно набрали 8)");
        }
        i++;
}


GBee 29.10.2010 22:24

/(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/

udaaff 29.10.2010 22:26

Проверки такого рода производятся с помощью регулярных выражений. Были уже темы на счет имейла на валидность на форуме. Гугл также в помощь.

goldlider 29.10.2010 22:27

Цитата:

Сообщение от GBee (Сообщение 946488)
/(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/

что это ? Че то я не понял.

Добавлено через 3 минуты
Цитата:

Сообщение от udaaff (Сообщение 946491)
Проверки такого рода производятся с помощью регулярных выражений. Были уже темы на счет имейла на валидность на форуме. Гугл также в помощь.

Да мне не нужны регулярные выражения. Сейчас читаю книгу Колина Мука - ActionScript 3.0.
Так там на стр. 92 есть упражнение. Там ничего насчет регулярных выражений сказано не было.

t4arty 29.10.2010 22:37

есть у типа String метод indexof, он проверяет если в строке символ(ы).

(Вроде метод тот)

goldlider 29.10.2010 22:41

Цитата:

Сообщение от t4arty (Сообщение 946497)
есть у типа String метод indexof, он проверяет если в строке символ(ы).

(Вроде метод тот)

Нет не подходит. Нужно с помощью charAt.

Добавлено через 45 минут
Может у кого-нибудь есть идеи ??

Mur4ik 29.10.2010 23:55

goldlider, Вам уже дали идею в одну строку вместо 20.

Вы боитесь регулярных выражений? То что Колин Мук по своим соображениям в том упражнении этого не показал, совсем не значит что остальные решения не верны.

Код AS3:

var userMail:String = "s0me.us_er@mail256a.wtf";
 
// вариант 1
function isValidEmail(email:String):Boolean
{
        var pattern:RegExp = /^[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$/i;
        return email.match(pattern) != null;
}
 
if ( isValidEmail(userMail) ) trace("1. верный");
else trace("1. не верный");
 
// вариант 2
if ( /^[a-z0-9][-._a-z0-9]*@([a-z0-9][-_a-z0-9]*\.)+[a-z]{2,6}$/.test(userMail) ) trace("2. верный");
else trace("2. не верный");

Хотите иной способ, попробуйте с помощью методов класса String учесть все возможные варианты и ужаснитесь от того во что это выльется.

Когда то натыкался типа на идеальное РВ, длина и вид впечатлили. :)

goldlider 30.10.2010 00:51

Mur4ik сам уже нашел решение. Я просто, забыл добавить в условие, что задача должна только лишь с помощью цикла while, условия if и метода charAt.
Правда код большой. Но самое главное работает.

Код AS3:

var i = 0;
var j = 0;
var k = 0;
var signEmail:Boolean;
var email = "example@timon.com"
 
while (i < email.length)
{
        if (email.charAt(0) == "@" || email.charAt((email.length)-1) == "@" || email.charAt(0) == "." || email.charAt((email.length)-1) == ".")
        {
                signEmail = false;
                trace("Проверьте корректен ли ввод !");
                break;
        }
        else if (email.charAt(i) == "@")
        {
                j++;
                if (j == 2)
                {
                    signEmail = false;
                          trace("Более одного @ недопустимо");
                          break;
                }
 
        }
        else if (email.charAt(i) == ".")
        {
                k++;
                if (k == 2)
                {
                        signEmail = false;
                        trace("Более одного . недопустимо")
                        break;
                }
        }
        i++;
}
 
if (j == 0)
{
        signEmail = false;
        trace("Введите хотя бы один @");
}
else if (k == 0)
{
        signEmail = false;
        trace("Введите хотя бы один .");
}
else
{
        trace("Введенный вами адрес правильный")
}


Bgg 30.10.2010 01:36

goldlider, вы извращенец.

t4arty 30.10.2010 03:17

теже яйца, только вид сбоку. ;(


Часовой пояс GMT +4, время: 23:49.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.