Регулярное выражение в sqlite - PullRequest
0 голосов
/ 17 февраля 2020

Я много думал об этом.

Итак, я хочу создать таблицу, которая содержит пароль. Пароль должен быть длиной не менее 6 символов и содержать минимум 2 цифры.

Моя версия была:

create table User (
  passwort varchar(80) not null check (length(passwort) >= 6 and passwort like '%[0-9]%[0-9]%')
);

Проблема с этим подходом состоит в том, что пароль должен содержать [0-9 ] дважды вместо фактических чисел. Кто-нибудь знает, как избавиться от этой проблемы?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Хотя я все еще рекомендую вам разделить работу на 2 согласно моему комментарию, ie.

  1. Проверьте длину строки.
  2. Используйте фактическое выражение для проверки если строка содержит 2 числа.

Вы можете использовать следующее выражение: ^(?=.{6,}).*?\d.*?\d.*?$. Что он делает, так это то, что он смотрит вперед минимум на 6 символов и затем проверяет, что строка состоит из 2 чисел, которые могут быть разделены 0 или более символами.

An Пример выражения доступен здесь .

0 голосов
/ 17 февраля 2020

Как насчет .*?\d.*?\d.*?

Это гарантирует, что от нуля или более символов (включая цифры) должно быть 2 цифры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...