Численное сравнение в регулярке

Verdel

Новичок
Численное сравнение в регулярке

Есть такой шаблон
#\[size(?:=)([0-9]{1,2})\](.*)\[/size\]#i

обрабатывает BB код

PHP:
[size=x][/size]
как поменять регулярку,чтобы x то есть $1 не превосходил например 40
 

white phoenix

Новичок
Verdel
В PCRE нет численного сравнения как такового, можно только баловаться с записью числа, но мне кажется в данном случае это не нужно. Почему бы не проверять $1 внутри callback-функции (если ты делаешь замену)? А выделять можно шаблоном '~\[size=(\d+)](.*)\[/size\]~i'.
Если я тебя не убедил, то:
~\[size=([0-3]?[0-9]|40)\](.*)\[/size\]~i'
White Rabbit
> #\[size(?:=)([0-3]?[0-9])\](.*)\[/size\]#i
В задаче сказано "не превосходил например 40", т.е. $1 <= 40. Такой вариант захватывает только от 0 до 39.
 

Verdel

Новичок
Да я вчера вообще по этому поводу тупонул :)
Правда лучше "проверять" значение далее в функции,а не самой регуляркой.

З.Ы Спасибо также white phoenix :)
 
Сверху