Postgres regex用于限制禁止字符和限制consequentive caps的数量

Postgres regex用于限制禁止字符和限制consequentive caps的数量,regex,postgresql,Regex,Postgresql,我想向两个表(在多个列上)添加几个相同的约束 为此,我想创建用于检查约束的函数 如果值包含以下任何一项(字符串将始终至少包含一些字母),则验证应失败: 。(两个后续点) 我相信您可以使用 (^.[^.])[.]{2}([^.].$)[124.[].[]上]][:upper:]{4}.[:upper:]+$ 它匹配(因此,由于您使用的是否定正则表达式匹配运算符,因此拒绝)以下模式: (^.[^.])[.]{2}([^.].$)-两个点,前面是字符串开头或非点字符,后面是非点字符或字符串结尾

我想向两个表(在多个列上)添加几个相同的约束

为此,我想创建用于检查约束的函数

如果值包含以下任何一项(字符串将始终至少包含一些字母),则验证应失败:

  • (两个后续点)
  • 我相信您可以使用

    (^.[^.])[.]{2}([^.].$)[124.[].[]上]][:upper:]{4}.[:upper:]+$
    
    它匹配(因此,由于您使用的是否定正则表达式匹配运算符,因此拒绝)以下模式:

    • (^.[^.])[.]{2}([^.].$)
      -两个点,前面是字符串开头或非点字符,后面是非点字符或字符串结尾(因此,仅
      字符串,无
    • []
      -a
    • [[:大写:]{4}
      -四个连续的大写字母
    • ^[:upper:]+$
      -完全由大写字母组成的字符串

    请参阅。

    尝试
    '[.]{2}|[.[:upper:]{4}| ^[:upper:]+$”
    @WiktorStribiżew我忘了提到它必须允许3个点
    ,抱歉!(然后,我将使用一个函数将
    转换为省略号,然后尝试
    (^ |[^.])[{2}([^.]|$)|[:[:upper:][]{4}^[:upper:][]+$
    ,现在它不能对非所有大写字母进行验证(它至少应该包含一个小写字母),但您已经提供了很大的帮助,非常感谢!如果条件允许的话“不全是大写字母,至少有一个小写字母”,那么就这样写吧。
    ^[[:upper:][]+$
    匹配一个只由大写字母组成的字符串。再次感谢您的帮助!我发布了另一个问题,据称要求有点复杂:。如果您能看一下,我将不胜感激。