Помогите с регуляркой
1.
Pashka13 (21.07.2012 / 13:21)
Начал осваивать рег. выражения и возник один вопрос. Есть регулярка [3]?[a-zA-Z]{2,4}[34]? нужно проверять строку ещё и на длину, которая должна быть 3 или 4 символа. Пытался делать так [[3]?[a-zA-Z]{2,4}[34]?]{3,4} но такая конструкция не работает. Подскажите решение проблемы, пожалуйста!
2.
Владислав (21.07.2012 / 13:32)
[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';
}
?>
3.
Pashka13 (21.07.2012 / 13:48)
Хотелось бы обойтись одной регуляркой без strlen
4.
Петр (21.07.2012 / 16:56)
Единственное, что приходит в голову
^[3a-z][a-z]{2}[34a-z]$
5.
Pashka13 (21.07.2012 / 18:32)
К сожалению эта регулярка будет работать не так, как мне надо (
6.
Владислав (21.07.2012 / 19:10)
#3, а другого выхода нет...хотя не, есть... в место strlen можно еще !isset($out[0]{4}) заюзать... и на производительности это особо не скажется
7.
Pashka13 (21.07.2012 / 19:16)
Меня интересовала не производительность, а возможность решения проблемы при помощи одной только регулярки без использования других функций. Но видно придётся похоронить идею. Всем спасибо за помощь )
8.
Петр (21.07.2012 / 19:38)
Извиняюсь, я почему-то не заметил, что и 3 символа можно. Вот так тогда
/^3?+[a-z]{2,4}+[34]?(?<=^.{3}|^.{4})$/i
Рано хоронишь идею :-)
9.
Pashka13 (21.07.2012 / 19:52)
Выглядит зловеще, надо попробовать )
10.
Владислав (21.07.2012 / 19:56)
#8, не плохо)) я читал давно как то, но чет не вник, ща вроде как понял))
11.
Don (21.07.2012 / 19:58)
if (!preg_match('/^[A-z0-9]{3,12}$/i',$login)){
echo 'Убедитесь что Логин содержит от 3 до 12 символов, и состоит из латинских';
} else {
echo 'Все гуд';
}
- а не легче так сделать?
12.
Pashka13 (21.07.2012 / 20:06)
#8, увы, не то
Одной регуляркой точно не обойдёшься. Всё, идея закопана )
13.
Pashka13 (22.07.2012 / 16:42)
#8, я ступил, регулярка работает, как надо ) благодарю!
URL:
https://visavi.net/topics/33377