Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Регулярные выражения - русский и английский текст

Сообщения:  [1-10]   [11-19] 

 
 автор: Artem S.   (30.08.2005 в 09:40)   письмо автору
 
   для: Ametis   (29.08.2005 в 23:15)
 

В данном примере смысла нет. А вот скажем в таком
/ba{2,4}с/
за "b" идет от 2-х до 4-х "a" затем "с"
В вашем примере вместо "b" и "c" следует использовать символы начала и конца строки.
/^a{2,4}$/
Расшифровывается как, начало строки, за этим идет от 2-х до 4-х "а", затем строка заканчивается.

   
 
 автор: Ametis   (29.08.2005 в 23:15)   письмо автору
 
   для: cheops   (29.08.2005 в 19:27)
 

"[]+" - это не метод для проверки переменой на предмет пустая она или нет, т.к. если переменная не пустая или не совпадает с регулярным выражением, в обоих случаях возвратится false и нам останется гадать: была она пустая или просто строка не совпала с рег.выражением
До сих пор я выяснил два обозначения пустого символа в регулярных выражениях ^$ о котором сказал Artem S и как я обнаружил (). Оба обозначения "пустоты" работают - проверял.Например выражение/a+|()/ выцепляет строки в которых есть хотябы один символ a или строка пустая. То же самое делает выражение /a+|^$/ Для быстрой проверки на соответствие регу пришлось написать небольшой скрипт. Для тех кому интересно привожу его код. Естественно скрипт работает если введено допускаемое регулярное выражение(неплохой способ проверки корректности регулярного выражения ))Скорее всего в это скрипте учтины не все моменты передачи рега через форму, так что не обессудьте если что):

<html>
<head>
<title>Регулярные выражения</title>
</head>
<body bgcolor="#A4FFCD">
<h3 align="center" style="font-family:arial; font-size:18px;">Проверка строк на соответствие регулярному выражению</h3>
<form name="my" method="post" > 
<table border="0" align="center" style="font-family:arial; font-size:18px; font-style:italic">
   <tr>
     <td>Регулярное выражение:</td>
     <td><input type="text" name="reg" size="50"></td>
   </tr>
   <tr>
     <td>Сравниваемая строка:</td>
     <td><input type="text" name="str" size="50"></td>
   </tr>
   <tr>
     <td>Результат:</td>
     <td><input type="text" name="otv" size="20"></td>
   </tr>
   <tr>
     <td>&nbsp;</td>
     <td><input type="submit" value="Проверить">
   </tr>
 </table>
  </form>
<?php
   $reg 
$_POST['reg'];
   
$str $_POST['str'];
  if (!empty(
$reg))
  {  
     
$reg stripslashes($reg);    
     if (
preg_match("$reg",$str)) 
     echo(
"<script language='javascript'>my.otv.value='Соответствует'</script>");
     else
     echo(
"<script language='javascript'>my.otv.value='Не соответствует'</script>");
  }
  
$reg addslashes($reg);
  echo(
"<script language='javascript'>my.reg.value='{$reg}'</script>");
  
$reg stripslashes($reg);    
  echo(
"<script language='javascript'>my.str.value='{$str}'</script>");
 
?>
 </body>
 </html>

При тестирование различных комбинаци регов, выяснилась еще одно странное поведение регов. Например рег /a{2,4}/ находит совпадение в стр. aaaaa в то время как у него верхняя граница 4 символа a. Можно предположить, что было найдено совпадение по первым двум символам aa, но тогда какой смысл в верхней границе ?

   
 
 автор: cheops   (29.08.2005 в 19:27)   письмо автору
 
   для: Ametis   (29.08.2005 в 18:22)
 

Если вам требуется, чтобы регулярное выражение возвращало true, когда переменная не пустая, и false, когда переменная пустая следует использовать конструкцию []+ (всё-равно что будет в квадратных скобках) - именно эта конструкция предназначена для обозначения "не пустоты".

   
 
 автор: Ametis   (29.08.2005 в 19:27)   письмо автору
 
   для: Artem S.   (29.08.2005 в 19:04)
 

Да, действительно все работает. Спасибо.

   
 
 автор: Artem S.   (29.08.2005 в 19:04)   письмо автору
 
   для: Ametis   (29.08.2005 в 18:45)
 

/^$/

Соответствует пустой строке

   
 
 автор: Евгений Петров   (29.08.2005 в 18:54)   письмо автору
 
   для: Ametis   (29.08.2005 в 18:45)
 

Вряд ли существует такой символ.

   
 
 автор: Ametis   (29.08.2005 в 18:45)   письмо автору
 
   для: Евгений Петров   (29.08.2005 в 18:27)
 

может быть - я в этом вопросе не такой специалист как вы, Евгений. Но все таки если можете подскажите существует ли символ пустоты в регулярных выражениях или нет ?

   
 
 автор: Евгений Петров   (29.08.2005 в 18:27)   письмо автору
 
   для: Ametis   (29.08.2005 в 18:22)
 

Ничего изящного я тут не вижу регулярные выражения работают намного медленнее функции empty или isset

   
 
 автор: Ametis   (29.08.2005 в 18:22)   письмо автору
 
   для: Artem S.   (29.08.2005 в 12:48)
 

Подскажите, а существут ли в регулярных выражения символ пустоты, незаполненности поля? Я вот эту задачу решил с помощью функции empty(). Но может быть в рег. выражениях есть символ пустоты, тогда решение было бы намного изящнее ?

   
 
 автор: Ametis   (29.08.2005 в 13:02)   письмо автору
 
   для: Artem S.   (29.08.2005 в 12:48)
 

Но у меня задача чтобы рег. выражение отлавливало либо отсутствие символов, либо латинские символы, либо знак минуса, либо знак подчеркивания, либо цифры - все остальное отбрасывается. В данно случае кирилица не отбрасывается - как исключить ее и все остальное что не перечислено выше?

   

Сообщения:  [1-10]   [11-19] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования