Помогите с регуляркой

Печать RSS
441

P
Автор
Пришелец
0
Начал осваивать рег. выражения и возник один вопрос. Есть регулярка [3]?[a-zA-Z]{2,4}[34]? нужно проверять строку ещё и на длину, которая должна быть 3 или 4 символа. Пытался делать так [[3]?[a-zA-Z]{2,4}[34]?]{3,4} но такая конструкция не работает. Подскажите решение проблемы, пожалуйста!
В

Пришелец
0
[a-zA-Z34]{3,4} так, если расположение цифр важно то оставь прежнюю и на выходе проверяй длинну...
<?php
if(preg_match('/^3?[a-z]{2,4}[34]?$/i',$string,$out) AND strlen($out[0])<=4){
    echo 'Ok';
}else{
    echo 'Not';
}
?>
P
Автор
Пришелец
0
Хотелось бы обойтись одной регуляркой без strlen
П

Пацак
0
Единственное, что приходит в голову
^[3a-z][a-z]{2}[34a-z]$
P
Автор
Пришелец
0
К сожалению эта регулярка будет работать не так, как мне надо (
В

Пришелец
0
#3, а другого выхода нет...хотя не, есть... в место strlen можно еще !isset($out[0]{4}) заюзать... и на производительности это особо не скажется
P
Автор
Пришелец
0
Меня интересовала не производительность, а возможность решения проблемы при помощи одной только регулярки без использования других функций. Но видно придётся похоронить идею. Всем спасибо за помощь )
П

Пацак
0
Извиняюсь, я почему-то не заметил, что и 3 символа можно. Вот так тогда
/^3?+[a-z]{2,4}+[34]?(?<=^.{3}|^.{4})$/i
Рано хоронишь идею :-)
Изменил: Петр (21.07.2012 / 19:42)
P
Автор
Пришелец
0
Выглядит зловеще, надо попробовать )
В

Пришелец
0
#8, не плохо)) я читал давно как то, но чет не вник, ща вроде как понял))
Изменил: Владислав (21.07.2012 / 20:02)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск