Я не думаю, что вам вообще нужно регулярное выражение, и оно может быть слишком сложным.
Если вы знаете, какую категорию вы хотите найти, предполагая, что пользователь запрашивает раздел «1.1» илираздел "1.2" или "1.4.1", то вы можете искать, используя подстановочный знак.
Вы не упоминаете, хранятся ли эти данные в виде десятичного числа или varchar, поэтому я предполагаю, что это varchar, и только потому, что в большинстве баз данных, которые я когда-либо видел, они всегда хранятся в таком виде.
Итак, если категория была 1.1, а вы хотели 1.1.0, 1.1.1, 1.1.12 и т. Д., Вы просто искали бы все, что соответствует 1.1.%, Что означает поиск всего, что 1.1, за которым следуетточка, за которой не следует число.
Пример запроса:
$category = "1.1";
$sql = "SELECT * FROM [your_table] WHERE cat LIKE '".$category.".%'";
Этот запрос будет соответствовать:
1.1.0
1.1.1
1.1.15
// Any anything else starting with 1.1.