Модераторы: ginnie, JackYF

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> регулярное выражение для проверки e-mail, не могу сообразить 
:(
    Опции темы
arto
Дата 15.7.2008, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1490
Регистрация: 31.10.2004

Репутация: нет
Всего: 40



бедные музейщики, им не послать почту.
arto@arto.name тоже неправильный адрес?
jfyi: arto+arto@arto.name -- вполне себе валидный синтаксис.
PM MAIL ICQ   Вверх
AlexPet
Дата 16.7.2008, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 5.12.2007
Где: Брянск

Репутация: нет
Всего: 1



Цитата(KSURi @ 15.7.2008,  19:00)
Также символ @ не надо эскейпить, т.к. у него нет никакой мета-ф-ии.

Вообще-то массивы интерполируются в регулярном выражении smile

Код

my @a = (1, 2);
$_ = '31 23';
/(@a)/;
print "'$1'";


Цитата

'1 2'

PM MAIL ICQ Jabber   Вверх
Agares
  Дата 16.7.2008, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 376
Регистрация: 20.5.2007
Где: Минск

Репутация: нет
Всего: нет



Хм.. не знал. спасибо.

А кто может помочь решить проблему? 


--------------------
Мой ноут: Impression First 657
ОС: Gentoo Linux
PM MAIL WWW Skype GTalk   Вверх
tolkien
Дата 16.7.2008, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

Репутация: нет
Всего: 4



Большая и толстая книга вам в помощь. Раздел про рег выражения. За основу возмите одно из рег выражениях написанных выше и улучшайте его.
PM MAIL   Вверх
Agares
Дата 16.7.2008, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 376
Регистрация: 20.5.2007
Где: Минск

Репутация: нет
Всего: нет



Я понимаю, но может у кого есть готовое решение? Просто мне максимально быстро нужно это сделать..


--------------------
Мой ноут: Impression First 657
ОС: Gentoo Linux
PM MAIL WWW Skype GTalk   Вверх
Agares
Дата 16.7.2008, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 376
Регистрация: 20.5.2007
Где: Минск

Репутация: нет
Всего: нет



Сделал вот так:
Код

/^([\w\d\-]+\.{0,1})+@[\w\d\-]+(\.{1}[\w\d\-]+)+$/


Это сообщение отредактировал(а) Agares - 16.7.2008, 10:58


--------------------
Мой ноут: Impression First 657
ОС: Gentoo Linux
PM MAIL WWW Skype GTalk   Вверх
IceSunrise
Дата 16.7.2008, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.4.2008
Где: Санкт-Петербург

Репутация: нет
Всего: 3



AlexPet

Цитата

Вообще-то массивы интерполируются в регулярном выражении 


Если после @ идет корректное имя переменной, то да, в противном случае можно не экранировать.

Код

my $str = 'test@1gmail.com';
my $res = ($str =~ /@1gmail\.com/) ? "YES!\n" : "NO!\n";
print $res;

PM MAIL   Вверх
AlexPet
Дата 16.7.2008, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 5.12.2007
Где: Брянск

Репутация: нет
Всего: 1



IceSunrise, да, именно так.
Но ИМХО лучше не испытывать судьбу и написать лишний обратный слеш (мало ли, через пару недель об этом забудешь smile )

Да и warning лишний не нужен (по крайней мере в ActivePerl)

Это сообщение отредактировал(а) AlexPet - 16.7.2008, 11:20
PM MAIL ICQ Jabber   Вверх
arto
Дата 16.7.2008, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1490
Регистрация: 31.10.2004

Репутация: нет
Всего: 40



в \w входит '_', в доменной части запрещено (фокусы с * опустим).

Добавлено через 14 минут и 42 секунды
btw, для первоначальной проверки можно использовать:

# perl -le 'my $re = shift; print "RE: /$re/"; print $a,"\t",($a =~ m#$re# ? "YES":"NO") eq $b ? "PASSED":"FAIL" while (($a,$b) = splice@ARGV,0,2);' \
 '^([\w\d\-]+\.{0,1})+@[\w\d\-]+(\.{1}[\w\d\-]+)+$' \
a@b.com YES a+test@com YES a@versale.museum YES a@b_c.com NO aa_bb@cc-dd.name YES aa%bb.com@cc.org YES "aa.bb.cc.dd@[192.168.1.1]" YES +aa@bb.com NO %aa@bb.com NO aa.aa.aa-aa-aa@bb..com NO
RE: /^([\w\d\-]+\.{0,1})+@[\w\d\-]+(\.{1}[\w\d\-]+)+$/
a@b.com PASSED
a+test@com      FAIL
a@versale.museum        PASSED
a@b_c.com       FAIL
aa_bb@cc-dd.name        PASSED
aa%bb.com@cc.org        FAIL
aa.bb.cc.dd@[192.168.1.1]       FAIL
+aa@bb.com      PASSED
%aa@bb.com      PASSED
aa.aa.aa-aa-aa@bb..com  PASSED

все должно быть PASSED.
дополнения приветствуются :)

PM MAIL ICQ   Вверх
gcc
Дата 1.10.2008, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



Data::Validate::Email

http://search.cpan.org/search?m=all&q=...date%3A&s=1

этоти модули наверное подойдут для этого дела? там где важное чтобы не прошел мусор? 

чтобы не было rm -rf /  smile 

Это сообщение отредактировал(а) gcc - 1.10.2008, 00:34
PM WWW ICQ Skype GTalk Jabber   Вверх
VutDen
Дата 22.1.2014, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.1.2014

Репутация: нет
Всего: нет



Вот держи, сам пользуюсь, поределение 99% 

Цитата

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?


а то что то простенькие у тебя выражения:)
PM MAIL   Вверх
arto
Дата 22.1.2014, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1490
Регистрация: 31.10.2004

Репутация: нет
Всего: 40



ошибка сходу -- пропустит домены вида a-------b.c---------d
PM MAIL ICQ   Вверх
Google
  Дата 24.10.2019, 02:10 (ссылка)  





  Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




[ Время генерации скрипта: 0.1157 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.