Как проверить, является ли строка числом, e-mail'ом?
От: Николай Меркин Россия  
Дата: 10.06.03 04:01
Оценка: 308 (7)
Статья:
Как проверить, является ли строка числом, e-mail'ом?
Автор(ы): Николай Меркин
Дата: 19.01.2002


Авторы:
Николай Меркин

Аннотация:
Перекуём баги на фичи!
Re: Как проверить, является ли строка числом, e-mail'ом?
От: Ka3a4oK  
Дата: 16.04.05 18:31
Оценка: -2
Дочитал до "...БНФ с элементами регулярных выражений называют Расширенной БНФ (РБНФ)..."
и бросил.

Во-первых:

>> "...Наиболее известная форма представления грамматики — это "форма Бэкуса-Наура"

>> (БНФ)..."
БНФ — форма представления "контекстно-cвободных" граматик. Например, контекстно-зависимая грамматика не может быть описана с помощью БНФ.

>>"...Для сокращения записи используются регулярные выражения..."

Я так понимаю, этим вы хотели сказать, что регулярные выражения — имеют одинаковую выразительную силу с БНФ? Тольк короче ?
Опять лажа: формализм регулярных выражений и конечных автоматов имеет одинаковую выразительную силу наряду с праволинейными(регулярными) грамматиками. Уже любую контекстно-свободную грамматику нельзая описать с помощью регулярных выражений.

Диагноз таков: Аффтор, незачет. Учи матчасть.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Re[2]: правильность мыла
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 20.02.04 13:10
Оценка: 12 (1)
Здравствуйте, King Oleg, Вы писали:

KO>А вообще по форуму пробегал регексп, который полностью соответствует стандарту.


Этот
Автор: Kaa
Дата: 31.07.03
?
Алексей Кирдин
Re[2]: правильность мыла
От: uzzy Россия  
Дата: 18.02.04 11:49
Оценка: +1
Здравствуйте, King Oleg, Вы писали:

KO>Здравствуйте, Аноним, Вы писали:


А>>а разве бывает мыло

А>><letters>@<letters>

А>>т.е. чтоб домен был без точки, например name@domain

А>>кто смотрел стандарты, поправте меня если я не прав ?
KO>Дефис(минус) в домене может быть только в середине.
KO>А вообще по форуму пробегал регексп, который полностью соответствует стандарту.
KO>П.С. Как всегда — не могу найти

Полагаю эта ветка:
PHP: Проверка E-Mail синтаксиса
Автор: 4mbi3nt
Дата: 04.07.03

Это из той же ветки но само решение:
Re[11]: PHP: Проверка E-Mail синтаксиса
Автор: DSD
Дата: 15.07.03
Powerman 5000 — Son of X51
Re[2]: правильность мыла
От: IO Украина  
Дата: 19.05.05 10:21
Оценка: +1
Здравствуйте, Кодт, Вы писали:
inline bool isLetter(char c) {
    return c >= 33 && c <= 126 
    //&& !strchr("()<>@,;:\.[]"); - ошибочная строка
    && !strchr("()<>@,;:\\.[]", c);
}

А в целом хорошая статья.
Повышение производительности "switch" решения
От: Аноним  
Дата: 20.02.02 06:36
Оценка:
В целях повышения производительности варианта со switch имеет смысл переписать функцию isLetter.
А из того, что сразу бросается в глаза, можно еще немного улучшить если в checkEMail_S изменить объявление "char c = *(str++);" на "const char c = *(str++);"

inline bool isLetter(char c)
{
return ( c >= 33 &&
c <= 126 &&
c != 'C' &&
c != ')' &&
c != '<' &&
c != '>' &&
c != '@' &&
c != ',' &&
c != ';' &&
c != ':' &&
c != '.' &&
c != '[' &&
c != ']' &&
c != '\\');
}
правильность мыла
От: Аноним  
Дата: 22.02.02 08:17
Оценка:
а разве бывает мыло
<letters>@<letters>

т.е. чтоб домен был без точки, например name@domain
кто смотрел стандарты, поправте меня если я не прав ?
может это обязательно чтоб была хоть одна точка в имени домена

и еще что-то я не очень понял табличный метод, можно чуть больше комментриев ?

ага только что понял, в чем причина, в версии для печати немного другой код чем этой ;(

это специально так ?
опечатка?
От: Аноним  
Дата: 24.02.02 15:46
Оценка:
> Mantissa4, <e> -> Indicator1
Состояния "Indikator1" нет, видимо имеется ввиду "Exponent1".
Было бы интересно почитать об общем методе построения автомата по регулярному выражению.
Re: правильность мыла
От: Кодт Россия  
Дата: 27.02.02 05:09
Оценка:
А где разница в коде?!

Насчет name@domain
RFC 822 (кстати, еще со времен ARPANET) регламентирует только форму записи.
Про домены первого уровня сказать не могу, но imho их никто не запрещал... (другое дело, что серверов таких, скорее всего, нет).
Перекуём баги на фичи!
Re: правильность мыла
От: Аноним  
Дата: 22.05.02 06:48
Оценка:
www.ru или www.com, например. Вот только обычно их названия не превышают 3 символов.

А вот точки в имени пользователя запрещены наверняка.
Re: Повышение производительности
От: Аноним  
Дата: 22.05.02 06:50
Оценка:
isLetter выигрыш дать может, а вот "char c = *(str++);" на "const char c = *(str++);"
вряд ли. Все равно переменная будет запихана в регистр.
А по чему тест производился без оптимизации?
От: Аноним  
Дата: 22.05.02 06:52
Оценка:
Результаты без оптимизации не показательны. Оптимизированный код может быть в 10 раз быстрее и результаты могут измениться.
Re: правильность мыла
От: Alexander Shargin Россия RSDN.ru
Дата: 22.05.02 07:54
Оценка:
Тем не менее, "user-friendly" адреса из имени и фамилии практикуются очень широко. Например, можно написать мне письмо по адресу Alexander.Shargin@softspb.com.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re: Повышение производительности
От: Аноним  
Дата: 04.06.02 06:25
Оценка:
И, по правде говоря, выигрыш дает очень заметный. А насчет const, ох давно это было, тоже был (но он мог быть связан с погрешностью в вычислениях (был мал)).
Ошибка
От: Аноним  
Дата: 04.06.02 10:44
Оценка:
"ДКА может порождать только либо бесконечную строку из одинаковых символов, либо 1-символьную, либо пустую"

Это не верно. Получая на вход тики, ДКА может порождать, например, функцию от номера тика. Или ещё что-то. Бесконечную строку из одинаковых символов, либо 1-символьную, либо пустую в этом случае будет порождать детерменированный конечный автомат без памяти.
Re: правильность мыла
От: Кодт Россия  
Дата: 27.08.02 13:29
Оценка:
Тем не менее, обратиться к http://ru или http://com не получится :)

А точки в именах пользователя разрешены (возможно, какие-либо сервера почтовых ящиков вводят ограничения — но это отступление от RFC 822).
Перекуём баги на фичи!
Неточность?
От: Frostbitten Россия  
Дата: 10.02.03 18:01
Оценка:
Если не ошибаюсь, то "Правила для автомата" в "Число с плавающей точкой" пропустят число "-".
Там не нужна строка "Mantissa2, <end> -> Success", благо в коде ее уже нет :)
Re: правильность мыла
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.06.03 09:39
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>а разве бывает мыло

А><letters>@<letters>

А>т.е. чтоб домен был без точки, например name@domain

А>кто смотрел стандарты, поправте меня если я не прав ?
Ну, по стандарту никаких проблем создать запись типа MX для домена первого уровня никаких проблем нет.
Более того, одно время в национальном домене Лесото (ls) не было никаких записей, кроме записи типа A для самого ls, т.е. в этой зоне был ровно один IP адрес. По стандарту, при отсутствии MX записи почтовые адреса резолвтся наприямую, т.е. мыло, отправленное в admin@ls должно было уехать в SMTP на том IP, который был для Лесото прописан.
... << RSDN@Home 1.0 beta 7a >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: правильность мыла
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.06.03 17:55
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Тем не менее, обратиться к http://ru или http://com не получится


К>А точки в именах пользователя разрешены (возможно, какие-либо сервера почтовых ящиков вводят ограничения — но это отступление от RFC 822).


Дык это как в ДНС-е прописано будет, так и будет. Просто www.ru прописали, а ru нет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: правильность мыла
От: King Oleg Украина http://kingoleg.livejournal.com
Дата: 18.02.04 11:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>а разве бывает мыло

А><letters>@<letters>

А>т.е. чтоб домен был без точки, например name@domain

А>кто смотрел стандарты, поправте меня если я не прав ?
Дефис(минус) в домене может быть только в середине.
А вообще по форуму пробегал регексп, который полностью соответствует стандарту.
П.С. Как всегда — не могу найти
King Oleg
*Читайте DOC'и, они rules*
Re: правильность мыла
От: anonymous Россия http://denis.ibaev.name/
Дата: 18.02.04 11:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>а разве бывает мыло

А><letters>@<letters>

А>т.е. чтоб домен был без точки, например name@domain

А>кто смотрел стандарты, поправте меня если я не прав ?
А>может это обязательно чтоб была хоть одна точка в имени домена

это возможно... например, для почтовых серверов в локальной сети, где имя локального сервера может быть без точки...
Re[3]: правильность мыла
От: King Oleg Украина http://kingoleg.livejournal.com
Дата: 20.02.04 13:29
Оценка:
Здравствуйте, Kaa, Вы писали:

Kaa>Здравствуйте, King Oleg, Вы писали:


KO>>А вообще по форуму пробегал регексп, который полностью соответствует стандарту.


Kaa>Этот
Автор: Kaa
Дата: 31.07.03
?


Именно
King Oleg
*Читайте DOC'и, они rules*
Re[2]: switch-конструкция - это и есть табличный разбор
От: Аноним  
Дата: 26.07.05 07:43
Оценка:
Тут со switch непонятно. Вроде б конструкция switch всегда и считалась табличным разбором... в этом контексте противопоставления switch и таблицы звучит странно...

С уважением.
Владимир Е. Зюбин

Здравствуйте, Аноним, Вы писали:

А>И, по правде говоря, выигрыш дает очень заметный. А насчет const, ох давно это было, тоже был (но он мог быть связан с погрешностью в вычислениях (был мал)).
Re: Как проверить, является ли строка числом, e-mail'ом?
От: np9mi7 Россия  
Дата: 18.03.07 16:20
Оценка:
Добрый день!

В статье упоминается:

Вообще, разбирающий автомат может не быть конечным (так, для Паскаля и Си используются "магазинные" (стековые) автоматы, а для Фортрана и этого недостаточно).


Поскольку не указан список литературы, используемой при подготовке материала, хотел поинтересоваться, где можно почитать поподробнее про стековые автоматы?

На мой беглый взгляд, в функции:
inline bool isLetter(char c) {
    return c >= 33 && c <= 126
        && !strchr("()<>@,;:\.[]", c);
}
, ошибка(выделено то, что нужно добавить, хотя компилятор и так бы ругнулся, но тем не менее);

Заранее благодарен за ответ.
"В любое мгновение принятия решения, лучшее, что вы можете сделать, это принять правильное решение; следующим лучшим вариантом будет принять неправильное решение, худший вариант – не принимать решения совсем" (c) Теодор Рузвельт.
Re[2]: Как проверить, является ли строка числом, e-mail'ом?
От: Кодт Россия  
Дата: 19.03.07 11:55
Оценка:
Здравствуйте, np9mi7, Вы писали:

N>Поскольку не указан список литературы, используемой при подготовке материала, хотел поинтересоваться, где можно почитать поподробнее про стековые автоматы?


Прежде всего, в книгах Ахо и Ульмана по компиляторам.

N>На мой беглый взгляд, в функции:

N>
N>inline bool isLetter(char c) {
N>    return c >= 33 && c <= 126
N>        && !strchr("()<>@,;:\.[]", c);
N>}
N>
, ошибка(выделено то, что нужно добавить, хотя компилятор и так бы ругнулся, но тем не менее);


Да, действительно, описка.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.