Читаю Котерова
"Регулярные выражения".
Там пишут что \w - любая буква или цифра.
Написал такой код:
<form action="index.php" method="post">
<input type="text" name="username"/>
<input type="submit" value="Отправить" />
</form>
<?php
///[a-zA-Z]+-[a-zA-Z]/
// preg_match("шаблон_поиска", "строка_в_которой_проводится_поиск", массив_с_результами_поиска)
if(isset($_POST['username']))
$user = $_POST['username'];
else { $user = ''; exit;}
echo $user.'<br>';
if(preg_match("/\\w/", $user)) {
echo "Имя пользователя задано в правильном формате";
} else {
echo "Имя пользователя задано в <b><font color='red'>неправильном формате</font></b>";
}
?>
Почему не работает кирилица в
\w?
2. Там пишут что есть выражения, которые определяют группу символов.
пишу так:
if(preg_match("/[[:alpha:]]/", $user)) {
определяет только латиницу почему то
3. Пишут что знак "*" соответствует 0 или больше символов, пишу так
/a-*-/
а затем ввожу одну букву, выдает ошибка, оказывается нужно 1 и более, а не ноль и более.
4.
http://s2.ipicture.ru/uploads/20120609/6Sdxdkh1.jpg
Пробую так:
if(preg_match("/a{1}/", $user)) {
хоть напишу один раз или 10 раз букву "а" выдает что верно, хотя здесь ограничитель в один раз
Пишу так:
if(preg_match("/a{1,2}/", $user)) {
Букву "а" согласно данному выражению я могу вводить от 1-2 раз, ввожу 10 раз букву "а" и выдает что верно
5. Пишут что если знак "?"(квантификатор), перед ним символ может повторятся только 0 или 1 раз(но не более!).
Пишу такой код:
if(preg_match("/a?/", $user)) {
Ввожу 10 раз букву а латинскую и выдает что верно.
Если кто может, объясните вот эти действия почему так и также почему не работет кирилица. Заранее благодарю.