|
|
|
| При изучении темы регулярных выражений не смог самостоятельно разобрать следующий код:
<form action="" method=post>
<input type=text name=name value="<?= $_POST['name']; ?>">
<input type=submit value='Проверить'>
</form><br>
<?php
if (isset($_POST['name']))
{
if (preg_match("|^[-0-9a-z_]+@[-0-9a-z^\.]+\.[a-z]{2,6}$|i", $_POST['name']))
{
echo "e-mail верен";
}
else
{
echo "e-mail неверен";
}
}
?>
|
Вызывает затруднение функция preg_match(), а именно первая часть регулярного выражения "|^[-0-9a-z_]+@[-0-9a-z^\.]+\.[a-z]{2,6}$|i" .
Шаблон начинается со знака "^", который задает начало и символ "$", задающий конец шаблона.
Непонятна вот эта часть: [-0-9a-z^\.]+\.. Здесь почему-то снова появляется символ "^", а после него экранируется точка и затем еще раз происходит экранирование точки.
Скажите пожалуйста, почему должно быть именно так. | |
|
|
|
|
|
|
|
для: uch
(08.02.2011 в 17:15)
| | В квадратных скобках знак ^ - это отрицание, т.е. символы, которые следуют за ним не должны встречаться. | |
|
|
|
|
|
|
|
для: cheops
(08.02.2011 в 17:22)
| | Спасибо, теперь понятно. В символьных классах, заключенные в квадратные кавычки, точку можно не экранировать или лучше не лениться экранировать? | |
|
|
|
|
|
|
|
для: uch
(08.02.2011 в 17:38)
| | Можно не экранировать, можно экранировать - в квадратных скобках это значения не имеет (собственно здесь это делается на тот случай, чтобы не забывать её экранировать, когда квадратные скобки по тем или иным причинам убираются в процессе отладки регулярного выражения).
[поправлено модератором: новый вопрос выделен в новую тему При запуске скрипта в окно ввода подставляется PHP-код] | |
|
|
|
|
|
|
|
для: cheops
(08.02.2011 в 17:22)
| | ух-ты! Это правда так?
[123^456] обозначает "или 1 или 2 или 3, но не 4, не 5 и не 6? | |
|
|
|
|
|
|
|
для: SHAman
(08.02.2011 в 17:43)
| | Да не, не может быть! Это не имеет смысла. Если там не 1, не 2 и не 3, то не важно что там!
Да и в классах символов не нужно экранировать точку. А нужна она там потому что почта может быть такой:
login@my.domain.ru | |
|
|
|
|
|
|
|
для: SHAman
(08.02.2011 в 17:45)
| | >Да не, не может быть! Это не имеет смысла. Если там не 1, не 2 и не 3, то не важно что там!
Да есть такое дело | |
|
|
|