如何编写正则表达式以匹配postgres中的'José'等名称。换句话说,我需要设置一个约束来检查是否只输入了有效名称,但是也想要允许unicode字符。
Regular expressions, unicode style对此有一些参考。但是,似乎我不能用postgres写它。
如果无法为此编写正则表达式,仅使用javascript检查客户端就足够了
答案 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' );