/ / validate_format_ofレール内の文字列 - ruby​​-on-rails、ruby、エンコーディング

ruby-on-rails、ruby、encodingの文字列のvalidate_format_ofの文字列

ユーザーが動詞の活用形を挿入できるフランス語の動詞活用形Rails Webサイトを作成しています。

     se abstenir
m"appelle
êtes
achète

そして私はそれらの動詞のvalidate_format_を必要とします。アポストロフィは非常に簡単ですが、êèã文字についてはどうですか。

今までに私は持っています:

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

wが一致しないので、これは明らかにうまくいきません。正規表現にáêµ(...)を含めると、無効なマルチバイト文字(US-ASCII)エラーが発生します。

これらの文字列を大文字小文字に変換する必要もあります。どのルビは無視していて、例えば "VOUSêTES"という結果になります。些細な答えは手でやっているようですが、私はRuby / Railsが私を再び驚かせてくれることを願っています。

それは難しい問題であるように思われます、そして私はRuby / Railsパワー以来期待していませんでした。

誰かが私に手がかりを与えることができますか?

回答:

回答№1は0

インストールする必要があります 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。


回答№2の場合は0

それ 代わりにのように見えますw あなたはPOSIXブラケット表現を使う必要があります [:alpha].

word_format = /A[:alpha]+[" ]?[w]*z/