使用正则表达式验证逗号分隔的单词串的格式

时间:2013-04-21 17:57:06

标签: ruby-on-rails ruby regex validation format

我正在尝试使用正则表达式在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." }

我不确定我的问题是在正则表达式还是验证方法本身。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:4)

您忘记使用^(字符串的开头)和$(字符串的结尾)

所以,它应该是

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

没有^$它会匹配字符串之间的任何位置。与^$匹配完全