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的答案。