2013-04-21 323 views
1

我試圖使用正則表達式從ruby類中的文本字段驗證逗號分隔的字符串。下面列出的是有效的:使用正則表達式驗證逗號分隔字符串的格式

word 

word, word, word 

word,word,word 

及以下應該是無效的:

word word word 

我想這會工作

/([a-z]+){1}(,\s*[a-z]+)*/i 

在Rubular,這似乎是有效的,但是當我在我的課堂驗證如下,它接受什麼應該是無效的字符串。

@tag_regex = /([a-z]+){1}(,\s*[a-z]+)*/i 

validates :tags, 
:allow_blank => true, 
:format => { :with => @tag_regex, :message => "Invalid tag format." } 

我不知道我的問題是否出在正則表達式或驗證自己的方法。任何幫助表示讚賞。

回答

4

你忘了使用^(字符串的開始)和$(字符串的結束)

所以,它應該是

/^([a-z]+)(,\s*[a-z]+)*$/i 

沒有^$它會之間是否匹配在字符串之間..與^$你正在匹配正好

+1

是的,你不需要'{1}',因爲它是默認值。 – Alexey 2013-04-21 18:00:04

+0

完美!感謝您的超快速響應。當它讓我在大約7分鐘時將會標記爲正確:) – dekin88 2013-04-21 18:03:00

相關問題