Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby正则表达式,确保字符串包含逗号字符_Ruby On Rails_Ruby_Regex - Fatal编程技术网

Ruby on rails Ruby正则表达式,确保字符串包含逗号字符

Ruby on rails Ruby正则表达式,确保字符串包含逗号字符,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,我需要验证字符串是否至少有一个逗号,但不超过4个逗号 这就是我尝试过的: /,{1,4}/ /,\s{1,4}/ 这两个都不管用 注意:我一直在测试我的正则表达式 非常感谢您的帮助 注意:我在活动记录验证的上下文中使用此选项: validates :my_string, format: { with: /,\s{1,4}/} 如何将其作为活动记录验证?它必须是正则表达式吗?如果没有,请使用Ruby的count方法: > "a,a,a,a,a".count(',') => 4

我需要验证字符串是否至少有一个逗号,但不超过4个逗号

这就是我尝试过的:

/,{1,4}/

/,\s{1,4}/
这两个都不管用

注意:我一直在测试我的正则表达式

非常感谢您的帮助

注意:我在活动记录验证的上下文中使用此选项:

validates :my_string, format: { with: /,\s{1,4}/}

如何将其作为活动记录验证?它必须是正则表达式吗?如果没有,请使用Ruby的
count
方法:

> "a,a,a,a,a".count(',')
=> 4

它必须是正则表达式吗?如果没有,请使用Ruby的
count
方法:

> "a,a,a,a,a".count(',')
=> 4

我也建议使用
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次
  • 锚定
    ^
    确保在第一个非捕获组之前没有逗号;及
  • [^,]*$
    确保最后一个非捕获组后面没有逗号

我也建议使用
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次
  • 锚定
    ^
    确保在第一个非捕获组之前没有逗号;及
  • [^,]*$
    确保最后一个非捕获组后面没有逗号

为了避免Rails依赖性,可能是
(2..4)。封面?“a,a,a,a,a”.count(',')#=>true
。谢谢-这正是我想做的。你知道如何将此应用于活动记录验证吗?为了避免Rails依赖性,可能是
(2..4)。封面?“a,a,a,a,a”.count(',')#=>true
。谢谢-这正是我想做的。你知道如何将此应用于活动记录验证吗?谢谢-这正是我想做的。你知道如何将其应用于活动记录验证吗?编写自定义验证程序非常简单。谢谢——这正是我想做的。你知道如何将其应用于活动记录验证吗?编写自定义验证程序非常简单。获取以下错误:ArgumentError:提供的正则表达式正在使用多行定位(^或$),这可能会带来安全风险。您是想使用\A和\z,还是忘记添加:multiline=>true选项?添加multiline:true后,它就可以工作了。你知道这里的安全风险是什么吗?如果没有
/m
,我对Ruby 2.2或Rubular没有任何问题。如果我将
^
替换为
\A
并将
$
替换为
\z
,它也可以正常工作,因为这里的行和字符串是一个整体。我不熟悉安全风险。因此出现以下错误:ArgumentError:提供的正则表达式正在使用多行定位(^或$),这可能会带来安全风险。您是想使用\A和\z,还是忘记添加:multiline=>true选项?添加multiline:true后,它就可以工作了。你知道这里的安全风险是什么吗?如果没有
/m
,我对Ruby 2.2或Rubular没有任何问题。如果我将
^
替换为
\A
并将
$
替换为
\z
,它也可以正常工作,因为这里的行和字符串是一个整体。我不熟悉安全风险。