Как правильно сравнивать регулярные выражения в postgreSQL? - PullRequest
0 голосов
/ 21 октября 2018

Попытка сравнить регулярные выражения из моей базы данных с параметрами функции и получить следующий ложный результат .. Но если я перейду к https://regexr.com/ и попытаюсь сравнить с тем же регулярным выражением и псевдонимом, который я получил совпадение ..

Нужна ваша помощь, что я делаю не так?

выберите псевдоним_r из регулярного выражения;// Здесь регулярное выражение, которое ниже

select '([0-9a-zA-Z.-_ \ = + \ @] {2,15})' ~ 'Maks. +';// РЕЗУЛЬТАТ false

set search_path = "postgres",coupon_system;
create or replace function loginValidator(nickname varchar, email varchar, u_password varchar) returns boolean as $$
    DECLARE
        checked boolean := false; n_regex varchar; e_regex varchar; p_regex varchar;
    BEGIN 

      select nickname_r , email_r, password_r into n_regex, e_regex, p_regex from regex;
      IF n_regex ~ nickname AND e_regex ~ email AND p_regex ~ u_password 
      THEN checked := true; 
      END IF;

     return checked;
    END;
$$ language plpgsql;

select loginValidator('Maks.+','Maks.Burkov88@gmail.com','+_Maks1988');

select nickname_r from regex;

select '([0-9a-zA-Z\.\-\_\=\+\@]{2,15})' ~ 'Maks.+'; // RESULT false

1 Ответ

0 голосов
/ 21 октября 2018

Шаблон должен быть справа от оператора:

select 'Maks.+' ~ '([0-9a-zA-Z\.\-\_\=\+\@]{2,15})'; 
-- yields true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...