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

  • Автор темы Автор темы Verdel
  • Дата начала Дата начала

Verdel

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

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

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

PHP:
[size=x][/size]

как поменять регулярку,чтобы x то есть $1 не превосходил например 40
 
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.
 
Да я вчера вообще по этому поводу тупонул :)
Правда лучше "проверять" значение далее в функции,а не самой регуляркой.

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