|
|
|
|
|
для: Ametis
(29.08.2005 в 23:15)
| | В данном примере смысла нет. А вот скажем в таком
за "b" идет от 2-х до 4-х "a" затем "с"
В вашем примере вместо "b" и "c" следует использовать символы начала и конца строки.
Расшифровывается как, начало строки, за этим идет от 2-х до 4-х "а", затем строка заканчивается. | |
|
|
|
|
|
|
|
для: 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> </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, но тогда какой смысл в верхней границе ? | |
|
|
|
|
|
|
|
для: Ametis
(29.08.2005 в 18:22)
| | Если вам требуется, чтобы регулярное выражение возвращало true, когда переменная не пустая, и false, когда переменная пустая следует использовать конструкцию []+ (всё-равно что будет в квадратных скобках) - именно эта конструкция предназначена для обозначения "не пустоты". | |
|
|
|
|
|
|
|
для: Artem S.
(29.08.2005 в 19:04)
| | Да, действительно все работает. Спасибо. | |
|
|
|
|
|
|
|
для: Ametis
(29.08.2005 в 18:45)
| |
Соответствует пустой строке | |
|
|
|
|
|
|
|
для: Ametis
(29.08.2005 в 18:45)
| | Вряд ли существует такой символ. | |
|
|
|
|
|
|
|
для: Евгений Петров
(29.08.2005 в 18:27)
| | может быть - я в этом вопросе не такой специалист как вы, Евгений. Но все таки если можете подскажите существует ли символ пустоты в регулярных выражениях или нет ? | |
|
|
|
|
|
|
|
для: Ametis
(29.08.2005 в 18:22)
| | Ничего изящного я тут не вижу регулярные выражения работают намного медленнее функции empty или isset | |
|
|
|
|
|
|
|
для: Artem S.
(29.08.2005 в 12:48)
| | Подскажите, а существут ли в регулярных выражения символ пустоты, незаполненности поля? Я вот эту задачу решил с помощью функции empty(). Но может быть в рег. выражениях есть символ пустоты, тогда решение было бы намного изящнее ? | |
|
|
|
|
|
|
|
для: Artem S.
(29.08.2005 в 12:48)
| | Но у меня задача чтобы рег. выражение отлавливало либо отсутствие символов, либо латинские символы, либо знак минуса, либо знак подчеркивания, либо цифры - все остальное отбрасывается. В данно случае кирилица не отбрасывается - как исключить ее и все остальное что не перечислено выше? | |
|
|
|
|