Вообщем надо что бы везде было 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
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 написал(а):
Спустя 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}"

П.С. с регулярками надо "выключить" интелект и представить себя глупой железкой выполняя по порядку все инструкции

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

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

Спустя 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 "есть";