Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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 如何在Rails中分别验证每个单词?_Ruby On Rails_Regex_Validation_Format - Fatal编程技术网

Ruby on rails 如何在Rails中分别验证每个单词?

Ruby on rails 如何在Rails中分别验证每个单词?,ruby-on-rails,regex,validation,format,Ruby On Rails,Regex,Validation,Format,这应该很容易,但至少对我来说不是 我有这样一个验证: validates :l_name, format: { with: /\b[A-Z][a-z]+\b/ } 我的目标是验证给定字符串的每个单词。因此,如果我设置我的l_名称:“Cow Milk”,它应该通过,但当我通过:“Cow Milk”或“Cow Milk”时,我希望它返回错误。但现在验证通过,只要至少有一个大写的单词 在正则表达式控制台中,它看起来不错。^([A-Z][A-Z]*)+([A-Z][A-Z]*)*$ 解释 第一部分^(

这应该很容易,但至少对我来说不是

我有这样一个验证:

validates :l_name, format: { with: /\b[A-Z][a-z]+\b/ }
我的目标是验证给定字符串的每个单词。因此,如果我设置我的l_名称:“Cow Milk”,它应该通过,但当我通过:“Cow Milk”或“Cow Milk”时,我希望它返回错误。但现在验证通过,只要至少有一个大写的单词

在正则表达式控制台中,它看起来不错。

^([A-Z][A-Z]*)+([A-Z][A-Z]*)*$

解释

第一部分
^([A-Z][A-Z]*)
确保字符串以大写单词
[A-Z]
开头,其中一个单词也可以是一个大写字符,因为
[A-Z]*
表示0或更多的A到Z

第二部分
([A-Z][A-Z]*)*$
检查是否有其他用空格分隔的大写单词
([
。但这些单词由
表示为可选)*
表示此类单词中的0个或多个。
$
确保字符串结尾之前的所有单词都大写。例如,如果没有
$
,这也将与我的咖啡中的牛奶相配

最后,
+
是不必要的,因为它表示1个或多个,但是因为我们只能在字符串的开头有一个大写的单词,所以我们不需要它 也可以使用
^([A-Z][A-Z]*)([A-Z][A-Z]*)*$
^([A-Z][A-Z]*)+([A-Z][A-Z]*)*$

解释

第一部分
^([A-Z][A-Z]*)
确保字符串以大写单词
[A-Z]
开头,其中一个单词也可以是一个大写字符,因为
[A-Z]*
表示0或更多的A到Z

第二部分
([A-Z][A-Z]*)*$
检查是否有其他用空格分隔的大写单词
([
。但这些单词由
表示为可选)*
表示此类单词中的0个或多个。
$
确保字符串结尾之前的所有单词都大写。例如,如果没有
$
,这也将与我的咖啡中的牛奶相配

最后,
+
是不必要的,因为它表示1个或多个,但是因为我们只能在字符串的开头有一个大写的单词,所以我们不需要它 也会起作用。
^([A-Z][A-Z]*)([A-Z][A-Z]*)*$

我不得不将其更改为\A([A-Z][A-Z]*)+([A-Z][A-Z]*)\Z但正则表达式非常有效,thnx:)如果你提供解释,我会向上推:)我必须将其更改为\A(+[A-Z][A-Z]*)+([A-Z][A-Z]*)\Z),但是正则表达式非常有效,thnx:)如果你提供解释,我会向上推:)