postgresql中的国际化正则表达式

时间:2010-09-29 08:45:23

标签: regex postgresql unicode

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

Regular expressions, unicode style对此有一些参考。但是,似乎我不能用postgres写它。

如果无法为此编写正则表达式,仅使用javascript检查客户端就足够了

1 个答案:

答案 0 :(得分:3)

PostgreSQL不支持像.NET那样基于Unicode字符数据库的字符类。你得到更标准的[[:alpha:]]字符类,但这是依赖于语言环境的,可能不会覆盖它。

您可以将您不想要的ASCII字符列入黑名单,并允许所有非ASCII字符。例如

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

(JavaScript也没有非ASCII字符类。甚至[[:alpha:]]。)

例如,将v_text作为要清理的文本变量:

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