[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярные выражения
kilogram
Читаю Котерова "Регулярные выражения".
Там пишут что \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.user posted image
Пробую так:
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 раз букву а латинскую и выдает что верно.

Если кто может, объясните вот эти действия почему так и также почему не работет кирилица. Заранее благодарю.





Спустя 1 час, 41 минута (9.06.2012 - 20:16) walerus написал(а):
Перечитай еще раз, регулярки и научись пользоваться условием ( if )...
Цитата
хоть напишу один раз или 10 раз букву "а" выдает что верно, хотя здесь ограничитель в один раз

if(preg_match("/a{1}/", $user))
Условие гласит - есть ли в тексте или что там у тебя на входе, минимум одна буква "а"? - Она у тебя есть !, в чем ошибка?

Цитата
Букву "а" согласно данному выражению я могу вводить от 1-2 раз, ввожу 10 раз букву "а" и выдает что верно

if(preg_match("/a{1,2}/", $user)) { 
Условие гласит - есть ли в тексте или что там у тебя на входе, хотя бы одна или две рядом стоящие буквы "а"? - Они у тебя есть !, в чем ошибка?

Цитата
Пишут что если знак "?"(квантификатор), перед ним символ может повторятся только 0 или 1 раз(но не более!). Ввожу 10 раз букву а латинскую и выдает что верно.

if(preg_match("/a?/", $user)) {
Условие гласит - есть ли в тексте или что там у тебя на входе, хотя бы одна буква "а"? - Она у тебя есть !, в чем ошибка? Кирилица не работает потому что нужно модификаторы указывать - для кириллицы модификатор - " u " .

Цитата
Небольшая таблица с модификаторами, которые используют при написании регулярных выражений.
Модификатор  Что делает
i  Самый важный модификатор, указав который регистр (строчная или прописная буква) при поиске соответствий учитываться не будет.
U  Если указать данный модификатор, то будет вестись поиск минимального по длине соответствия. По умолчанию же ищется максимальное по длине соответствие.
m  Данный модификатор будет искать соответствие только в одной строке, а не по всему тексту.
s  Противоположность модификатору m, то есть, указав данный модификатор, соответствие будет искаться по всему тексту.
x  При использовании данного модификатора пробельные символы будут игнорироваться. То есть Вы можете написать хоть 100 пробелов, и они будут опущены. Если, конечно, Вы их не экранируете (с помощью "\").

Спустя 55 минут, 17 секунд (9.06.2012 - 21:11) inpost написал(а):
Модификатор u для ЮТФ

Спустя 15 часов, 8 минут, 30 секунд (10.06.2012 - 12:20) walerus написал(а):
inpost Точно, я не много не так написал ), сорри )

Спустя 1 день, 7 часов, 58 минут, 38 секунд (11.06.2012 - 20:18) kilogram написал(а):
Если я написал так не заключив регулярное выражение в одиночный символ командами ^....$

if(preg_match("/[12[:^digit:]]/", $user)) {

Это означает что человек может ввести что-то одно из трех?
Или цифру 1 или цифру 2 или все что не является цифрами?
То есть можно ввести что-то одно из трех по желанию, а не обязательно 1 потом должно идти 2 потом должно идти все что не является цифрой?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.