如何在PostgreSQL中正确比较正则表达式?

时间:2018-10-21 16:18:09

标签: regex postgresql

试图将我的数据库中的正则表达式与函数参数进行比较,并得到以下错误结果..但是,如果我转到https://regexr.com/并尝试与相同的正则表达式和昵称进行比较,我就匹配了.. < / p>

需要您的帮助,我在做什么错?

  

从正则表达式中选择nickname_r; //这是

下的正则表达式      

选择'([[0-9a-zA-Z .-_ \ = + \ @] {2,15})'〜'Maks。+'; //结果为假

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 :(得分:1)

模式应位于运算符的右侧:

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