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

1 回答 1

4

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

所以,应该是

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

没有^$它将匹配字符串之间的任何位置..With ^$您将使其完全匹配

于 2013-04-21T17:59:09.713 回答