我需要验证字符串是否至少有一个逗号,但不能超过4个逗号。
这是我尝试过的:
/,{1,4}/
/,\s{1,4}/
这些都不起作用。
注意:我一直在Rubular
上测试我的RegEx非常感谢任何帮助。
注意:我在Active Record Validation的上下文中使用它:
validates :my_string, format: { with: /,\s{1,4}/}
如何将此作为Active Record Validation?
答案 0 :(得分:2)
str ="a,b,a,,"
p str.count(",").between?(1, 4) # => true
答案 1 :(得分:1)
它必须是正则表达式吗?如果没有,请使用Ruby的count
方法:
> "a,a,a,a,a".count(',')
=> 4
答案 2 :(得分:1)
我也建议使用count
,但为了解决您的具体问题,您可以这样做:
r = /^(?:[^,]*,){1,4}[^,]*$/
!!"eenee"[r]
#=> false
!!"eenee, meenee"[r]
#=> true
!!"eenee, meenee, minee, mo"[r]
#=> true
!!"eenee, meenee, minee, mo, oh, no!"[r]
#=> false
(?:[^,]*,)
是一个非捕获组,它匹配逗号以外的任何字符串,后跟逗号; {1,4}
确保非捕获组匹配1到4次; ^
确保在第一个非捕获组之前没有逗号;和[^,]*$
确保最后一次非捕获组后没有逗号。