Bandicoot
@Bandicoot
Вась-программист

Как сделать такую регулярку?

Нужно выбрать из таблицы БД поле со строками, которые НЕ начинаются с 6 цифр, идущих подряд (это почтовый индекс если что). Строки различной длины, от 30 до 150 и более символов. Какая регулярка здесь подойдет для запроса с regexp'ом?

Первый правильный ответ отмечу решением)
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
Moskus
@Moskus
MySQL использует синтаксис POSIX ERE.
Следовательно, shorthand class \d использовать нельзя, нужно писать [0-9].
Далее, ?! - это negative lookahead, который не поддерживается. Но если переписать выражение, как ^[0-9]{6}.*, оно даст, естественно, обратный эффект - "только строки, начинающиеся с шести цифр".
Но не забываем, что мы пишем SQL-запрос, а не просто регулярку. Потому вот это сработает:
SELECT .. WHERE myfield NOT REGEXP '^[0-9]{6}.*'
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Roman-Fov
Оно?
^(?![\d]{6}).*
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы