[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярные выражения
memba
Время подумать, что не так.

Вообщем надо что бы везде было NO.

========================

$string = "string_string";

$msg = (preg_match("/^[A-z0-9-]+$/", $string) != 0) ? "yes" : "no";

echo $msg."<br />"; // YES ... Почему пропускает символ '_'


//================================

$string = "string---string";

$msg = (preg_match("/^([A-z0-9]+[-]{1}[A-z0-9]+)*/", $string) != 0) ? "yes" : "no";

echo $msg."<br />"; // YES ... Явно указано что одно тире, а потом буква или цифра.

$msg = (preg_match("/[-]{1}/", $string) != 0) ? "yes" : "no";

echo $msg."<br />"; // YES ... Явно уканазно что последовательность из одного тире!


//================================

$string = "string--string";

$msg = (preg_match("/^([A-z0-9]+[-]{1}[A-z0-9]+)*$/", $string) != 0) ? "yes" : "no";

echo $msg."<br />"; // NO - урааа!!!

$string = "string-a-string";

$msg = (preg_match("/^([A-z0-9]+[-]{1}[A-z0-9]+)*$/", $string) != 0) ? "yes" : "no";

echo $msg."<br />"; // NO - >_< !@#$%^ ПОЧЕМУ!!!!

$string = "string-aa-string";

$msg = (preg_match("/^([A-z0-9]+[-]{1}[A-z0-9]+)*$/", $string) != 0) ? "yes" : "no";

echo $msg."<br />"; // YES - >_<


//================================

$string = "aaaa";

$msg = (preg_match("/[a]{1}/", $string) != 0) ? "yes" : "no";

echo $msg."<br />"; // YES

$msg = (preg_match("/[a]{0,3}/", $string) != 0) ? "yes" : "no";

echo $msg."<br />"; // YES .. Почему?!



А вообще надо строку содержащую только цифры, латинские буквы и тире. И что бы тире не повторялось. т.е. string-string-string - можно, а string--string----string нельзя.



Спустя 13 часов, 49 минут, 46 секунд (25.09.2010 - 08:18) htaccess написал(а):
Я не спец по регуляркам, зато есть хорошая ссылка, ребята с этого форума дали :
http://irbis-team.com/15/20

Спустя 12 часов, 40 минут, 12 секунд (25.09.2010 - 20:59) memba написал(а):
Это я всё видел )

просто почему самое простое

$string = "string_string";

$msg = (preg_match("/^[A-z0-9-]+$/", $string) != 0) ? "yes" : "no";

echo $msg."<br />"; // YES ... Почему пропускает символ '_'


явно указано, что только Буковки латинского алфавита Верхний\Нижний регистр, Цифры и Тире

Почему пропускает строку с нижним подчеркиванием?

Спустя 1 час, 46 минут, 36 секунд (25.09.2010 - 22:45) Nord написал(а):
Потому что: ASCII-таблица
Между Z и a есть замечательные символы:
[ \ ] ^ _  `


Спустя 2 часа, 9 минут, 29 секунд (26.09.2010 - 00:55) mad/crs написал(а):
$string = "string-a-string";
$msg = (preg_match("/^([A-z0-9]+[-]{1}[A-z0-9]+)*$/", $string) != 0) ? "yes" : "no";
echo $msg."<br />"; // NO - >_< !@#$%^ ПОЧЕМУ!!!!

помоему потому что у вас в регулярке указано: !начало_строки! символы [A-z0-9] один и более раз, далее один знак - и опять символы [A-z0-9] один и более раз !конец_строки!
а на самом деле то там ещё данные "-string" поэтому и не найдено,
и немного жутковато выглядит "[-]{1}" smile.gif
П.С. с регулярками надо "выключить" интелект и представить себя глупой железкой выполняя по порядку все инструкции smile.gif

Спустя 10 часов, 2 минуты, 7 секунд (26.09.2010 - 10:57) DedMorozzz написал(а):
mad/crs
Цитата
с регулярками надо "выключить" интелект и представить себя глупой железкой выполняя по порядку все инструкции

Щиииикарное мнение smile.gif
В регулярках самые чистые алгоритмы. Нужно знать и понимать синтаксис, после которого можно будет сделать всё что угодно, оперируя логикой.

По сабжу - решение нашел?
Если нет - более кратко напиши что хочешь, читать много кода - нету желания, а я тебе напишу решение. Ибо для поиска оного затратил достаточно усилий.

Спустя 6 минут, 7 секунд (26.09.2010 - 11:03) DedMorozzz написал(а):
Цитата (htaccess @ 25.09.2010 - 07:18)
Я не спец по регуляркам, зато есть хорошая ссылка, ребята с этого форума дали :
http://irbis-team.com/15/20

Не только дали, но и писали wink.gif

Спустя 3 часа, 7 минут, 4 секунды (26.09.2010 - 14:10) memba написал(а):
Цитата
ASCII-таблица


с этим понял, не думал что он так тупо смотрит.

Цитата
string-a-string


с этим тоже разобрался

DedMorozzz

нужно что бы в строке не повторялись знак "-" подряд.

asd-ads-ads можно ... asd-ads--ads нельзя

Спустя 1 час, 11 минут, 16 секунд (26.09.2010 - 15:21) DedMorozzz написал(а):
дык и ищи 2 символа. Зачем усложнять задачу?

<?php
$a='asd-ads-ads';
$b= strpos($a, '--');
if(empty($b)) echo "нету";
else echo "есть";
Быстрый ответ:

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