Rails validates_format_of

时间:2010-03-18 12:28:04

标签: ruby-on-rails regex validation

我想使用validates_format_of验证逗号分隔的字符串,只包含字母(小号和大写字母)和数字。

所以

example1,example2,22example44,ex24

不: ^& *,<> ,asfasfsdafas<#%$#

基本上我想让用户输入逗号分隔的单词(包括数字)而不包含特殊字符。

我将使用它来验证acts_as_taggable_on中的标签。 (例如,我不想成为有效的标签。

提前致谢。

3 个答案:

答案 0 :(得分:0)

^([a-zA-Z0-9]+,\s*)*[a-zA-Z0-9]+$

请注意,此正则表达式与空格的值不匹配,因此它不会匹配多个单词,如“abc xyz,fgh qwe”。它匹配逗号后的任何数量的空格。如果validates_format_of尝试匹配整个字符串,您可能不需要^或$,我从未使用过Rails,所以我不知道。

答案 1 :(得分:0)

^[A-Za-z0-9]+([ \t]*,[ \t]*[A-Za-z0-9]+)*$

应匹配仅包含这些字符的CSV行,无论它只是一个值还是多个。

答案 2 :(得分:0)

你总是可以在rubular测试正则表达式,你会发现tiftiks和Tims正则表达式都可以工作,虽然有一些带有空格的奇怪边缘情况。

蒂姆的解决方案可以扩展到包括前导空格和尾随空格,然后按照以下方式执行您想要的操作: -

^\s*[A-Za-z0-9]+(\s*,\s*[A-Za-z0-9]+)*\s*$

据推测,当您验证输入字符串时,您需要将其转换为标记数组以进行迭代。你可以这样做: -

array_var = string_var.delete(' ').split(',')