regex - postgresql 中的国际化正则表达式

标签 regex postgresql unicode

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

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

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

最佳答案

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' );

关于regex - postgresql 中的国际化正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3820034/

相关文章:

php - Json 到带有希腊字符的 xml

java - 这种分组方法有什么问题吗? (分割字符串)

java - 如何使用正则表达式来分割java中前导空格的确切数量?

postgresql - Postgres : query schedule given day, time_of_day,和时区名称

node.js - Sails Waterline 大文件 PostgreSQL

perl - 如何在我的 Pearl 源代码中嵌入汉字?

Java:模式匹配器方法返回错误结果

python - 在 pymongo 中搜索时忽略一个特定或任何特殊字符

mysql - 如何在sql中以第三乘法顺序选择表的行,如3、6、9等

c++ - Windows Unicode C++ 流输出失败