validate_format_of строки с символами в рельсах - PullRequest
0 голосов
/ 27 марта 2012

Я делаю французский сайт Rails для спряжения глаголов, где пользователи могут вставлять спряжения глаголов, например:

     se abstenir
     m'appelle
     êtes
     achète

И мне нужно проверить_формат этих глаголов. Апострофы довольно просты, но как насчет символов кита?

К настоящему времени у меня есть:

    word_format = /\A[\w]+[' ]?[\w]*\z/
    validates_format_of (...), :with => word_format

Что явно не работает, так как \ w не соответствует им. Кроме того, добавление в регулярное выражение символа (...) дает мне недопустимую ошибку многобайтового символа (US-ASCII).

Мне также нужно указывать только те строки, которые игнорирует ruby, например, «VOUS êTES». Тривиальный ответ, кажется, делает это вручную, но я надеюсь, что Ruby / Rails снова удивит меня.

Кажется, это трудная проблема, и я не ожидал с момента появления Ruby / Rails.

Кто-нибудь может дать мне подсказку?

Ответы [ 2 ]

0 голосов
/ 27 марта 2012

Вам понадобится установить UnicodeUtils для перемещения вверх.

#encoding: utf-8
require "unicode_utils/upcase"
puts UnicodeUtils.upcase("êtes Niño")#=> ÊTES NIÑO

Регулярное выражение может выглядеть так:

word_format = /\A[[:word:]]+[' ]?[[:word:]]*\z/

/[[:word:]]/ -Символ в одной из следующих общих категорий Unicode: буква, метка, число, Connector_Punctuation.

0 голосов
/ 27 марта 2012

Это выглядит вместо из \w, вам нужно использовать скобочное выражение POSIX [:alpha].

word_format = /\A[:alpha]+[' ]?[\w]*\z/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...