Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Регулярные выражения > разбор e-mail на недопустимые символы


Автор: trinitr0 7.8.2013, 12:37
Пишу так:

Код

$string = "some@mail.ru";
if ($string =~ /([^<>(),;\s]+)@([^<>(),;\s]+)/){
    print "valid"
}else{print "Invalid"}


В итоге выводится "Invalid". Помогите пожалуйста как написать правильно регулярку?

Автор: ginnie 7.8.2013, 13:10
trinitr0, я бы сделал так:
Код

use Email::Valid;
print (Email::Valid->address('some@mail.ru') ? 'valid' : 'invalid');


P.S. что касается Вашего примера, добавьте
Код

use strict;
use warnings;

и все станет понятно.

Автор: trinitr0 7.8.2013, 13:21
Лаконично! Но мне бы хотелось бы понять где в моём RegExp ошиПка

Автор: ginnie 7.8.2013, 13:26
Цитата(trinitr0 @  7.8.2013,  13:21 Найти цитируемый пост)
Лаконично! Но мне бы хотелось бы понять где в моём RegExp ошиПка 

Ошибка тут
Код

$string = "some@mail.ru";

Автор: trinitr0 7.8.2013, 13:47
Пока не понимаю, где тут ошибка? 

Автор: ginnie 7.8.2013, 13:52
Добавьте
Код

print $string;

Автор: trinitr0 7.8.2013, 14:05
Ах вот оно в чём дело!

Цитата

...Name "main::mail" used only once...


Спасибо! Об этом даже не подумал!

Автор: ginnie 7.8.2013, 14:09
Цитата(trinitr0 @  7.8.2013,  14:05 Найти цитируемый пост)
Спасибо! Об этом даже не подумал!

Чтобы упростить процесс разработки, надо всегда использовать
Код

use strict;
use warnings;

Автор: trinitr0 7.8.2013, 14:18
Ясно.

Конечно можно так:
Код

$string = "some\@mail.ru";


Но как заставить работать всётаки при:

Код

$string = "some@mail.ru";


Автор: ginnie 7.8.2013, 14:20
Цитата(trinitr0 @  7.8.2013,  14:18 Найти цитируемый пост)
Ясно. Но тогда как заставить работать эти строки? 

Вопрос относится к Вашему примеру, или к strict и warnings?

Автор: trinitr0 7.8.2013, 14:25
К примеру

Автор: ginnie 7.8.2013, 15:41
Как вариант:
Код

$string = 'some@mail.ru';

Автор: trinitr0 7.8.2013, 16:39
Цитата(ginnie @ 7.8.2013,  15:41)
Как вариант:
Код

$string = 'some@mail.ru';


Так то что надо!
Спасибо большое за ценные советы, внимание и помощь!

 smile 

Автор: igorold 23.8.2013, 06:26
можно еще так:

Код

$string = "some\@mail.ru"


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id520215b66ccc19557d000002#findElement_E7045_5216d6776ccc19f551001c3f_0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)