Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Регулярные выражения


Автор: +++ 3.8.2004, 00:39
Как на регулярных выражениях записывается пробел??? и знак переноса строки \n???? и сам символ "-"????
=====================================
[a-zA-Z] - это я только буквы разрешил, а как сюда еще добавить пробел, чтобы можно было тоже разрешить??? скока инфы не читал про пробел все молчат smile.gif)

и еще посмотрите правильно ли я проверяю e-mail на корректность???
========================================
$proverka = ereg ("[0-9a-zA-Z_]+@[0-9a-zA-Z^\\.]+\\.[a-zA-Z]{2,4}", $email);
if ($proverka==false) { echo 'Вы некорректно заполнили поле E-mail'; }
=========================================
Кстати почему используя эту проверку на e-mail такой адрес проходит:
[email protected]
а такой нет:
[email protected]
Т.е. в имени почты перед @ можно использовать знак "-" а после @ в доменном имени почему-то это запрещено хотя все тоже????
И еще.. почему можно написать и так вот и кстати тоже проходит проверку:

[email protected]
ведь я четко указал что [a-zA-Z]{2,4} т.е. от 2 до 4 символов??? а я тут целую кучу их поставил вместо 4.. но тоже проходит через проверку
========================================
Заранее благодарю за объяснения моих глупых вопросов.

Автор: IZ@TOP 3.8.2004, 01:04
Все пробельные символы, в том числе и знак переноса строки и возврата каретки обазначаются как \s. Почитай в FAQ, там немного про реги есть.
Проверка email'a:
Цитата
"^[a-zA-Z0-9_\\.\\-]*[^\\.\\-]@[a-zA-Z0-9_\\.\\-]*[^\\.\\-]\\.[a-zA-Z]{2,4}$"

По этой проверке пройдут адреса следующих типов:
Цитата
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

Автор: Guest 3.8.2004, 01:26
Классная проверка
==========================
"^[a-zA-Z0-9_\\.\\-]*[^\\.\\-]@[a-zA-Z0-9_\\.\\-]*[^\\.\\-]\\.[a-zA-Z]{2,4}$"
===========================
Никогда б до такой не додумался smile.gif
кстати мне не совсем понятно почему вы используете *[^\\.\\-] после имени ящика т.е. тем что перед @ и после доменного имени т.е. перед точкой .ru (например).
Я то понял что без *[^\\.\\-] работать не будет.. но все-таки странные эти рег. выражения никак в них толком не въеду sad.gif

Автор: IZ@TOP 3.8.2004, 09:34
Значит так, объясняю:
1) ^ - означает начало строки.
2) [a-zA-Z0-9_\\.\\-]* Означает любое количество символов от A до Z, цифр, знаков "." и дефиса.
3) [^\\.\\-]Означает отрицание знаков "." и дефиса перед знаком at (@).
4) @ знак at (@)
5) [a-zA-Z0-9_\\.\\-]* см. п2.
[^\\.\\-] см п3. Примечание: отрицает идущие перед .dom знаки "." и дефиса.
\\. Точка.
[a-zA-Z]{2,4} 2 - 4 буквы от A до Z.
$Конец строки.

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