Ruby on rails 如何检测是否(数字字符(非数字))

Ruby on rails 如何检测是否(数字字符(非数字)),ruby-on-rails,ruby,regex,ruby-on-rails-3,Ruby On Rails,Ruby,Regex,Ruby On Rails 3,如果我有这个场景,我将如何检测,我将得到这个输入 3b => allow 4b => allow 55b => allow 1111bbbb => allow num45 => no ! 如果我允许给定,我还想删除所有不是数字的字符 3b => 3 555B => 555 11 => 11 我试图检查给定的输入是否为数字,但这种情况超出了我的知识范围 感谢您的时间和考虑。如果字符串以数字开头 !/^[0-9]/.match(@variable)

如果我有这个场景,我将如何检测,我将得到这个输入

3b => allow
4b => allow
55b => allow
1111bbbb => allow
num45 => no !
如果我允许给定,我还想删除所有不是数字的字符

3b => 3
555B => 555
11 => 11
我试图检查给定的输入是否为数字,但这种情况超出了我的知识范围


感谢您的时间和考虑。

如果字符串以数字开头

!/^[0-9]/.match(@variable).nil?
如果是,则只获取数字部分

   @variable = @variable.gsub(/[^0-9]/, '')

如果字符串以数字开头

!/^[0-9]/.match(@variable).nil?
如果是,则只获取数字部分

   @variable = @variable.gsub(/[^0-9]/, '')

嗯,我不是regex忍者,但我想你可以用:
^([\d]+)
来捕捉数字。试试看

嗯,我不是正则忍者,但我想你可以用:
^([\d]+)
来捕捉数字。试一试

您可以使用:

/\A(\d+)[a-z]*\z/i
如果表达式与所需的数字匹配,则该数字将位于第一个捕获组中

例如。(它使用
^
/
$
而不是
\A
/
\z
仅用于演示,您应该使用
\A
/
\z

您可以使用:

/\A(\d+)[a-z]*\z/i
如果表达式与所需的数字匹配,则该数字将位于第一个捕获组中


例如。(它使用
^
/
$
而不是
\A
/
\z
只是为了演示,您应该使用
\A
/
\z

这将查找整数+字符串并将其转换为整数。它将忽略字符串+整数输入

input = '45num'

if input.match(/\d+[a-zA-Z]+/)
  result = input.to_i
end

result => 45

这将查找整数+字符串并将其转换为整数。它将忽略字符串+整数输入

input = '45num'

if input.match(/\d+[a-zA-Z]+/)
  result = input.to_i
end

result => 45


你真的想用:
str[/\A\d+/]
-这将给你前导数字或零。

你真的想用:
str[/\A\d+/]
-这将给你前导数字或零。

但它失败了,例如“abfff45”。gsub(/[^0-9]/i',)=>“45”如果第一个字符不是numbersorry,我只是觉得你需要第二部分,我也包括了第一部分-1。它将从
“random\n1bar2”
中为您提供
12
。最坏的解决方案会被接受。布莱·卡姆,如果他检查字符串是否符合第一条语句,如果符合,则执行第二条语句,所有内容都是正确的alright@Zippie,如上面匹配的字符串所示,检查有许多缺陷。但它失败了,例如“abfff45”.gsub(/[^0-9]/i',)=>“45”。如果第一个字符不是numbersorry,我希望返回false,我只是觉得你需要第二部分,我也包括了第一部分-1。它将从
“random\n1bar2”
中为您提供
12
。最坏的解决方案会被接受。布莱·卡姆,如果他检查字符串是否符合第一条语句,如果符合,则执行第二条语句,所有内容都是正确的alright@Zippie,如上面匹配的字符串所示,检查有许多缺陷。没有问题。在我的正则表达式中有一个错误,现在也修复为关闭,但这将匹配“foo\n99”没有问题。我的正则表达式中有一个错误,该错误现在也修复了,但它将匹配“foo\n99”。这是迄今为止最好的答案,与之相比,我的看起来像***:)问题是:
num45=>否-我认为这意味着它不应该匹配。但是谁知道呢?是的,你是对的!我把输入打错了。不过正则表达式是正确的:)更新了。这是迄今为止最好的答案,我的答案看起来像***与之相比:)问题是:
num45=>不-我认为这意味着它不应该匹配。但是谁知道呢?是的,你是对的!我把输入打错了。但是正则表达式是正确的:)Updated.close,但是“11”应该返回“11”,而不是nil@pguardiario哦,我在说明书里不清楚。修复。为什么要使用
[a-z]*\z
?这真的不能改善测试。请参阅@pguardiario的答案。关闭,但“11”应返回“11”,而不是nil@pguardiario哦,我在说明书里不清楚。修复。为什么要使用
[a-z]*\z
?这真的不能改善测试。见@pguardiario的答案。