如何通过Postgres中的检查约束验证URL?

时间:2017-03-01 03:05:57

标签: sql regex postgresql

这是我尝试过的众多检查表达之一:

(url::text ~* 'https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,255}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)'::text)

哪个行不通。

然而奇怪的是(对于电子邮件验证):

(email::text ~* '^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+$'::text)

我不确定这两种支票表达方式之间的区别是什么,虽然我很想知道。

那么如何通过Postgres中的检查约束验证网址?

1 个答案:

答案 0 :(得分:0)

在问题下方的注释帮助下,我已修复了用于URL验证的表达式。 因此,仅用于共享:

(website :: text ~* 'https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,255}\.[a-z]{2,9}\y([-a-zA-Z0-9@:%_\+.~#?&//=]*)$' :: text)