ユーザーが動詞の活用形を挿入できるフランス語の動詞活用形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/