2012-03-27 36 views
0

我正在做一個法國的動詞變位Rails的網站,用戶可以插入像動詞詞形AEIOU:validate_format_of串在軌

 se abstenir 
    m'appelle 
    êtes 
    achète 

,我需要validate_format_of那些動詞。撇號很容易,但êè字符呢?

現在我有:

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

這顯然並不因爲\工件W不匹配。還包括正則表達式(......)給我一個無效的多字節字符(US-ASCII)錯誤。

我還需要對這些字符串進行小寫處理,而這些字符串是ruby忽略的,導致例如「VOUSêtes」。這個微不足道的答案似乎是手工完成的,但我希望Ruby/Rails再次讓我感到驚訝。

它似乎是一個難題,而且自從Ruby/Rails的實力以來我並不期待。

任何人都可以給我一個線索?

回答

0

你需要安裝UnicodeUtils爲upcasing東西。

#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

像一個魅力 – alexandrecosta 2012-03-27 17:15:46

0

looks like instead\w您需要使用POSIX括號表達式[:alpha]

word_format = /\A[:alpha]+[' ]?[\w]*\z/ 
+0

錯誤的答案:'á'.match(/ [:alpha] /)答案=>無......謝謝無論如何,但沒有用 – alexandrecosta 2012-03-27 15:50:04