интернационализированное регулярное выражение в postgresql - PullRequest
6 голосов
/ 29 сентября 2010

Как писать регулярные выражения для соответствия именам, таким как 'José', в postgres .. Другими словами, мне нужно установить ограничение, чтобы проверить, что вводятся только допустимые имена, но также разрешить символы юникода.

Регулярные выражения, стиль Unicode имеют некоторые ссылки на это. Но, похоже, я не могу написать это в postgres.

Если невозможно написать регулярное выражение для этого, будет достаточно проверить только на стороне клиента, используя javascript

1 Ответ

3 голосов
/ 29 сентября 2010

PostgreSQL не поддерживает классы символов, основанные на базе символов Unicode, как .NET.Вы получаете более стандартный [[: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' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...