Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.10.2010, 22:17
goldlider вне форума Посмотреть профиль Отправить личное сообщение для goldlider Найти все сообщения от goldlider
  № 1  
Ответить с цитированием
goldlider

Регистрация: Jun 2010
Сообщений: 120
По умолчанию Проверка адреса 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++;
}


Последний раз редактировалось goldlider; 29.10.2010 в 22:21.
Старый 29.10.2010, 22:24
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 2  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
/(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 29.10.2010, 22:26
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 3  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Проверки такого рода производятся с помощью регулярных выражений. Были уже темы на счет имейла на валидность на форуме. Гугл также в помощь.

Старый 29.10.2010, 22:27
goldlider вне форума Посмотреть профиль Отправить личное сообщение для goldlider Найти все сообщения от goldlider
  № 4  
Ответить с цитированием
goldlider

Регистрация: Jun 2010
Сообщений: 120
Цитата:
Сообщение от GBee Посмотреть сообщение
/(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/
что это ? Че то я не понял.

Добавлено через 3 минуты
Цитата:
Сообщение от udaaff Посмотреть сообщение
Проверки такого рода производятся с помощью регулярных выражений. Были уже темы на счет имейла на валидность на форуме. Гугл также в помощь.
Да мне не нужны регулярные выражения. Сейчас читаю книгу Колина Мука - ActionScript 3.0.
Так там на стр. 92 есть упражнение. Там ничего насчет регулярных выражений сказано не было.


Последний раз редактировалось goldlider; 29.10.2010 в 22:35.
Старый 29.10.2010, 22:37
t4arty вне форума Посмотреть профиль Отправить личное сообщение для t4arty Найти все сообщения от t4arty
  № 5  
Ответить с цитированием
t4arty

Регистрация: May 2010
Адрес: пространство в положении
Сообщений: 219
есть у типа String метод indexof, он проверяет если в строке символ(ы).

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

Старый 29.10.2010, 22:41
goldlider вне форума Посмотреть профиль Отправить личное сообщение для goldlider Найти все сообщения от goldlider
  № 6  
Ответить с цитированием
goldlider

Регистрация: Jun 2010
Сообщений: 120
Цитата:
Сообщение от t4arty Посмотреть сообщение
есть у типа String метод indexof, он проверяет если в строке символ(ы).

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

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

Старый 29.10.2010, 23:55
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 7  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
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 учесть все возможные варианты и ужаснитесь от того во что это выльется.

Когда то натыкался типа на идеальное РВ, длина и вид впечатлили.
__________________
trace("Остановите Землю, я сойду!!!");


Последний раз редактировалось Mur4ik; 30.10.2010 в 00:13.
Старый 30.10.2010, 00:51
goldlider вне форума Посмотреть профиль Отправить личное сообщение для goldlider Найти все сообщения от goldlider
  № 8  
Ответить с цитированием
goldlider

Регистрация: Jun 2010
Сообщений: 120
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("Введенный вами адрес правильный")
}

Старый 30.10.2010, 01:36
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 9  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
goldlider, вы извращенец.

Старый 30.10.2010, 03:17
t4arty вне форума Посмотреть профиль Отправить личное сообщение для t4arty Найти все сообщения от t4arty
  № 10  
Ответить с цитированием
t4arty

Регистрация: May 2010
Адрес: пространство в положении
Сообщений: 219
теже яйца, только вид сбоку. ;(

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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