Jump to content
  • 0

Регулярные выражения


kilogram
 Share

Question

Читаю Котерова "Регулярные выражения".

Там пишут что \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.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 раз букву а латинскую и выдает что верно.

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

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Почему не работает кирилица в \w?

Особенности реализации

определяет только латиницу почему то

Смотреть ответ выше

3. Пишут что знак "*" соответствует 0 или больше символов, пишу так

/a-*-/

а затем ввожу одну букву, выдает ошибка, оказывается нужно 1 и более, а не ноль и более.

А ничего, что у вас два раза - написан?

Пробую так:

if(preg_match("/a{1}/", $user)) { 

хоть напишу один раз или 10 раз букву "а" выдает что верно, хотя здесь ограничитель в один раз

Чтобы ограничитель работал, нужно использовать ^ и $, т.е. запрос должен быть таким

/^a$/

Пишу так:

if(preg_match("/a{1,2}/", $user)) { 

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

Потому что действительно верно, нашел хоть одно совпадение, которое равно a или aa

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

Пишу такой код:

if(preg_match("/a?/", $user)) { 

Ввожу 10 раз букву а латинскую и выдает что верно.

Абсолютно верно.

Edited by s0rr0w
  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy