2015-10-17 35 views
1

這應該是容易的,但它不是,至少對我來說:(如何在Rails中分別驗證每個單詞?

我有這樣的驗證:

validates :l_name, format: { with: /\b[A-Z][a-z]+\b/ } 

我的目標是驗證定字符串的每個字左右。如果我設置我的名字:「牛奶」它應該通過,但是當我通過:「牛奶」或「牛奶」時,我希望它返回錯誤。但是現在驗證通過,只要至少有一個大寫字

在正則表達式中,它看起來不錯,但是,

回答

0

^([A-Z][a-z]*)+([A-Z][a-z]*)*$

說明

第一部分^([A-Z][a-z]*)可確保該字符串開頭^帶有大寫字[A-Z],其中一個字可以是也單個大寫字符,如[a-z]*指0或更大的對ž。

第二部分([A-Z][a-z]*)*$檢查用空格分隔的其他大寫單詞([。但是這些詞是可選的,由)*表示,這意味着0個或更多個這樣的詞。 $確保直到字符串末尾的所有單詞都大寫。例如沒有$這也將匹配Cow milk in my coffee

最後+不是必須的,因爲它表示1或更多,但是因爲我們在字符串的開頭只能有一個大寫字母,所以我們不需要它。所以這 也將工作^([A-Z][a-z]*)([A-Z][a-z]*)*$

+0

我不得不將它更改爲\ A([AZ] [az] *)+([AZ] [az] *)* \ z,但它的正則表達式很棒thnx :)如果您提供解釋, ) – Kazik

相關問題