|
|
|
| Добрый день. Помогите пожалуйста создать регулярное выражение, которое удовлетворяло бы каждому значению следующей последовательности:
zz
z-z
z-zz
z-z-z
z-z-zz
ну и т.д.
Большое Спасибо. | |
|
|
|
|
|
|
|
для: Newman 13
(04.11.2007 в 08:41)
| | А чему оно не должно удовлетворять? Не очень понятно... | |
|
|
|
|
|
|
|
для: kasmanaft
(04.11.2007 в 08:49)
| | Нужен шаблон который бы указал о наличии в строке перечисленных значений,
значения по своей сути представляют последовательность указанную выше.
Шаблон должен выглядеть так:
символ z в начале и в конце, а в середине очередность символов '-' и 'z'.
Вся проблема в том, что я немогу выразить эту очередность в шаблоне ...
К примеру чтоб шаблон мог выбрать и значение zz, и z-z и остальные из последовательности ... | |
|
|
|
|
|
|
|
для: Newman 13
(04.11.2007 в 09:10)
| | z-zz-z удовлетворяет?
Если нет, то можно вот так попробовать: /^z(-z)*z?$/, а если да, то как показал Unkind. | |
|
|
|
|
|
|
|
для: kasmanaft
(04.11.2007 в 09:53)
| | kasmanaft, шаблон /^z(-z)*z?$/ тоже не подходит, так как пропускается вариант 'z-z' и 'z-z-z' ... | |
|
|
|
|
|
|
|
для: Newman 13
(04.11.2007 в 08:41)
| |
<?php
$string = 'z-zz-z';
if( preg_match('/^z((-z+)+)?$/', $string) )
{
echo 'Yep!';
}
else
{
echo 'String is NOT valid';
}
?>
|
| |
|
|
|
|
|
|
|
для: Unkind
(04.11.2007 в 09:37)
| | Ребят, спасибо за столь быструю реакцию - неожиданно для форума, но все же вы не поняли задачи, или я неправильно объяснил её.
Шаблон должен быть примерно таким:
if( preg_match('/^z(rrr)z$/', $string)
|
где за место 'rrr' должно быть шаблон удовлетворяющий значениям '' , '-' , '-z' , '-z-', '-z-z', '-z-z-' и т.д., т.е. очередности знаков '-' и 'z'.
В предыдущем коде изначально была взята неверное значение переменной $string = 'z-zz-z'; - здесь в середине нет очередности (символ 'z' идет два раза подряд) ...
Можно ли задать такую очередность с помощью регулярного выражения? Или проще было бы перебрать все варианты через знак альтернативы '|' ... | |
|
|
|
|
|
|
|
для: Newman 13
(04.11.2007 в 10:11)
| | Тогда надо чуть-чуть изменить pattern kasmanaft'а:
<?php
$string = 'z-z-z-z';
if( preg_match('/^z(-z)*-?z$/', $string) )
{
echo 'Yep!';
}
else
{
echo 'String is NOT valid';
}
?>
|
| |
|
|
|
|
|
|
|
для: Unkind
(04.11.2007 в 10:16)
| | Нет, зачем.. Получилось практически то же самое..
Newman 13, что значит "пропускается вариант 'z-z' и 'z-z-z' ..." - их не надо пропускать?
Вы "?" не забыли? /^z(-z)*z?$/
Кстати, так пропустит "z", если не надо, используйте исправленный вариант Unkind'a :) | |
|
|
|
|
|
|
|
для: kasmanaft
(04.11.2007 в 10:31)
| | > Нет, зачем.. Получилось практически то же самое..
Не то же. Ваш вариант пропустит строку "z".
P.S. Кстати, я тоже заметил противоречие у автора:
"создать регулярное выражение, которое удовлетворяло бы каждому значению следующей последовательности:
zz
...
z-z-z
..."
" тоже не подходит, так как пропускается вариант 'z-z' и 'z-z-z'"
Так нужно или нет "z-z-z"? | |
|
|
|
|
|
|
|
для: Unkind
(04.11.2007 в 10:35)
| | Ups, извинте, шаблон /^z(-z)*z?$/ действительно работет, большое спасибо!!!!!!!!
Тема закрыта. | |
|
|
|
|
|
|
|
для: Newman 13
(04.11.2007 в 11:04)
| | Обратите внимание на то, что он пропускает строку "z".
Используйте шаблон Unkind'a (04.11.2007 в 10:16), если эту строку пропускать не нужно. | |
|
|
|