我想使用validates_format_of验证逗号分隔的字符串,只包含字母(小号和大写字母)和数字。
所以
example1,example2,22example44,ex24
不: ^& *,<> ,asfasfsdafas<#%$#
基本上我想让用户输入逗号分隔的单词(包括数字)而不包含特殊字符。
我将使用它来验证acts_as_taggable_on中的标签。 (例如,我不想成为有效的标签。
提前致谢。
答案 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(',')