2013-04-21 325 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

相关问题