Регулярное выражение любой строки с максимальной длиной

#php #mysql #sql #regex #where-clause

#php #mysql #sql #регулярное выражение #где-предложение

Вопрос:

Я пытаюсь создать mysql-regex SQL, который найдет любые строки с максимальной длиной — я могу сделать это в javascrtip, php и так далее — но по какой-то причине я могу заставить его работать в mysql

Пример строк:

  1. a12
  2. a123
  3. a1234
  4. a12345
  5. a123456

Итак, допустим, я хочу, чтобы мое регулярное выражение отображало ЛЮБЫЕ строки длиной 4 или менее — поэтому в приведенном выше примере мое регулярное выражение должно совпадать с 1 и 2.

Приведенный ниже код отлично работает при попытке найти любые строки выше определенной длины, но я не могу заставить его работать со строками ниже определенной длины.

 ([a-zA-Z])[0-9a-zA-Z]{20,}
 

я, очевидно, пытался сделать

 ([a-zA-Z])[0-9a-zA-Z]{0,6}
 

но по какой-то причине не работает

Комментарии:

1. Почему бы просто не использовать length() функцию, если это то, что вас волнует?

Ответ №1:

Я думаю, вы хотите:

 ^[a-zA-Z][0-9a-zA-Z]{0,3}$
 

Это соответствует строке, состоящей из буквенного символа, за которым следуют от 0 до 3 буквенно-цифровых символов. Одна важная вещь — совпадение по всей строке: это то, что делают якоря ^ (начало строки) и $ (конец строки).