代码之家  ›  专栏  ›  技术社区  ›  robert

postgresql中的国际化正则表达式

  •  6
  • robert  · 技术社区  · 14 年前

    如何编写正则表达式来匹配postgres中的“Jos”等名称。。换句话说,我需要设置一个约束来检查是否只输入了有效的名称,但也希望允许使用unicode字符。

    Regular expressions, unicode style

    如果不可能为此编写regex,那么使用javascript只在客户端进行检查就足够了吗

    1 回复  |  直到 10 年前
        1
  •  3
  •   Dave Jarvis aSterX    12 年前

    PostgreSQL不支持像.NET那样基于Unicode字符数据库的字符类。你得到更标准的 [[:alpha:]] 字符类,但这取决于区域设置,可能不会涵盖它。

    你也许能逃脱只是黑名单的ASCII字符,你不想要,并允许所有非ASCII字符。例如

    [^\s!"#$%&'()*+,\-./:;<=>?\[\\\]^_`~]+
    

    [:alpha:] .)

    例如,给定 v_text

    -- Allow internationalized text characters and remove undesired characters
    v_text = regexp_replace( lower(trim(v_text)), '[!"#$%&()*+,./:;<=>?\[\\\]\^_\|~]+', '', 'g' );