我正在尝试使用正则表达式在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." }
我不确定我的问题是在正则表达式还是验证方法本身。任何帮助表示赞赏。
答案 0 :(得分:4)
您忘记使用^
(字符串的开头)和$
(字符串的结尾)
所以,它应该是
/^([a-z]+)(,\s*[a-z]+)*$/i
没有^
,$
它会匹配字符串之间的任何位置。与^
,$
匹配完全