Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.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 On Rails_Ruby_Regex - Fatal编程技术网

Ruby on rails 正则表达式不匹配负整数

Ruby on rails 正则表达式不匹配负整数,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,我查询了我的付款型号。我的amount列是一个整数。我想从我的amount列中消除负整数。我只想显示具有正值的付款 Payment.where('amount NOT REGEXP ?', '^-\d+$') 及 两者都可以在Rubular中使用,但在我的Rails应用程序中不起作用。我尝试在控制台中进行匹配,但也不起作用: amount.to_i =~ /^-\d*\.?\d+$/ 我知道=0条件会起作用,但我想知道为什么它不适用于REGEX如果您只是尝试删除负整数,这样的东西在性能更好的

我查询了我的
付款
型号。我的
amount
列是一个整数。我想从我的
amount
列中消除负整数。我只想显示具有正值的付款

Payment.where('amount NOT REGEXP ?', '^-\d+$')

两者都可以在Rubular中使用,但在我的Rails应用程序中不起作用。我尝试在控制台中进行匹配,但也不起作用:

amount.to_i =~ /^-\d*\.?\d+$/

我知道
=0
条件会起作用,但我想知道为什么它不适用于
REGEX

如果您只是尝试删除负整数,这样的东西在性能更好的情况下不是同样有效吗

Payment.where('amount >= 0')

如果您只是想删除负整数,那么像这样的东西在性能更好的情况下是否也同样有效

Payment.where('amount >= 0')

如果您只是想删除负整数,那么像这样的东西在性能更好的情况下是否也同样有效

Payment.where('amount >= 0')

如果您只是想删除负整数,那么像这样的东西在性能更好的情况下是否也同样有效

Payment.where('amount >= 0')

我认为您的regexp在控制台中工作

$ irb
irb(main):001:0> /^-\d*\.?\d+$/ =~ "-3"
=> 0
irb(main):002:0> $~
=> #<MatchData "-3">
irb(main):003:0> /^-\d*\.?\d+$/ =~ "-3.1415"
=> 0
irb(main):004:0> $~
=> #<MatchData "-3.1415">
irb(main):005:0> /^-\d*\.?\d+$/ =~ "128"
=> nil
irb(main):006:0>
$irb
irb(主):001:0>/^-\d*\.?\d+$/=~“-3”
=> 0
irb(主要):002:0>$~
=> #
irb(主):003:0>/^-\d*\.?\d+$/=~“-3.1415”
=> 0
irb(主要):004:0>$~
=> #
irb(主):005:0>/^-\d*\.?\d+$/=“128”
=>零
irb(主要):006:0>

我认为您的regexp可以在控制台中工作

$ irb
irb(main):001:0> /^-\d*\.?\d+$/ =~ "-3"
=> 0
irb(main):002:0> $~
=> #<MatchData "-3">
irb(main):003:0> /^-\d*\.?\d+$/ =~ "-3.1415"
=> 0
irb(main):004:0> $~
=> #<MatchData "-3.1415">
irb(main):005:0> /^-\d*\.?\d+$/ =~ "128"
=> nil
irb(main):006:0>
$irb
irb(主):001:0>/^-\d*\.?\d+$/=~“-3”
=> 0
irb(主要):002:0>$~
=> #
irb(主):003:0>/^-\d*\.?\d+$/=~“-3.1415”
=> 0
irb(主要):004:0>$~
=> #
irb(主):005:0>/^-\d*\.?\d+$/=“128”
=>零
irb(主要):006:0>

我认为您的regexp可以在控制台中工作

$ irb
irb(main):001:0> /^-\d*\.?\d+$/ =~ "-3"
=> 0
irb(main):002:0> $~
=> #<MatchData "-3">
irb(main):003:0> /^-\d*\.?\d+$/ =~ "-3.1415"
=> 0
irb(main):004:0> $~
=> #<MatchData "-3.1415">
irb(main):005:0> /^-\d*\.?\d+$/ =~ "128"
=> nil
irb(main):006:0>
$irb
irb(主):001:0>/^-\d*\.?\d+$/=~“-3”
=> 0
irb(主要):002:0>$~
=> #
irb(主):003:0>/^-\d*\.?\d+$/=~“-3.1415”
=> 0
irb(主要):004:0>$~
=> #
irb(主):005:0>/^-\d*\.?\d+$/=“128”
=>零
irb(主要):006:0>

我认为您的regexp可以在控制台中工作

$ irb
irb(main):001:0> /^-\d*\.?\d+$/ =~ "-3"
=> 0
irb(main):002:0> $~
=> #<MatchData "-3">
irb(main):003:0> /^-\d*\.?\d+$/ =~ "-3.1415"
=> 0
irb(main):004:0> $~
=> #<MatchData "-3.1415">
irb(main):005:0> /^-\d*\.?\d+$/ =~ "128"
=> nil
irb(main):006:0>
$irb
irb(主):001:0>/^-\d*\.?\d+$/=~“-3”
=> 0
irb(主要):002:0>$~
=> #
irb(主):003:0>/^-\d*\.?\d+$/=~“-3.1415”
=> 0
irb(主要):004:0>$~
=> #
irb(主):005:0>/^-\d*\.?\d+$/=“128”
=>零
irb(主要):006:0>

(1)
^
$
表示行的开始/结束,而不是Ruby中的字符串,您需要Ruby中的
\A
\z
。(2) 正则表达式用于字符串,而不是数字。(3) Ruby正则表达式与数据库的正则表达式不同,每个环境对正则表达式的工作方式和允许的特定语法都有自己的想法。我猜您正在使用MySQL作为数据库。(4) 当你处理整数时,为什么要费心处理小数点呢?我认为只要
/^-/
就足够了(1)
^
$
表示行的开始/结束,而不是Ruby中的字符串,你想要Ruby中的
\A
\z
。(2) 正则表达式用于字符串,而不是数字。(3) Ruby正则表达式与数据库的正则表达式不同,每个环境对正则表达式的工作方式和允许的特定语法都有自己的想法。我猜您正在使用MySQL作为数据库。(4) 当你处理整数时,为什么要费心处理小数点呢?我认为只要
/^-/
就足够了(1)
^
$
表示行的开始/结束,而不是Ruby中的字符串,你想要Ruby中的
\A
\z
。(2) 正则表达式用于字符串,而不是数字。(3) Ruby正则表达式与数据库的正则表达式不同,每个环境对正则表达式的工作方式和允许的特定语法都有自己的想法。我猜您正在使用MySQL作为数据库。(4) 当你处理整数时,为什么要费心处理小数点呢?我认为只要
/^-/
就足够了(1)
^
$
表示行的开始/结束,而不是Ruby中的字符串,你想要Ruby中的
\A
\z
。(2) 正则表达式用于字符串,而不是数字。(3) Ruby正则表达式与数据库的正则表达式不同,每个环境对正则表达式的工作方式和允许的特定语法都有自己的想法。我猜您正在使用MySQL作为数据库。(4) 当你处理整数时,为什么还要费心处理小数点?我认为只要
/^-/
就足够了