PostgreSQL正则表达式验证电子邮件地址
发布时间:2020-12-13 16:07:08 所属栏目:百科 来源:网络整理
导读:CREATE OR REPLACE FUNCTION addUploader(INTEGER,TEXT,TEXT) RETURNS TEXT AS $$DECLARE u_id ALIAS FOR $1 ; username ALIAS FOR $2; email ALIAS FOR $3; BEGIN IF email NOT LIKE '^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+$' THEN RAISE EXCEPTION
CREATE OR REPLACE FUNCTION addUploader(INTEGER,TEXT,TEXT) RETURNS TEXT AS $$ DECLARE u_id ALIAS FOR $1 ; username ALIAS FOR $2; email ALIAS FOR $3; BEGIN IF email NOT LIKE '^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+$' THEN RAISE EXCEPTION 'Wrong E-mail format %',email USING HINT = 'Please check your E-mail format.'; END IF ; INSERT INTO uploader VALUES(u_id,username,email); IF NOT FOUND THEN RETURN 'Error'; END IF; RETURN 'Successfully added' ; EXCEPTION WHEN unique_violation THEN RAISE NOTICE 'This ID already exists. Specify another one.' ; RETURN 'Error' ; END ; $$LANGUAGE 'plpgsql' ; SELECT addUploader(25,'test','steven@gmail.com'); 此正则表达式不接受正确的电子邮件地址.它应该接受steven@gmail.com.它也拒绝任何其他字符串. stevengmailcom – 拒绝 一切都被拒绝了. 我究竟做错了什么? 解决方法
你没有在PostgreSQL中使用LIKE与正则表达式,你使用
~ ,~* ,!~ ,and !~* 运算符:
所以你的测试看起来应该更像这样: IF email !~ '^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+$' THEN 您也可能想要查找更好的电子邮件地址正则表达式,“a b@c.com”是一个有效的电子邮件地址,但您的正则表达式不喜欢它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |