0

如果我有这种情况,我将如何检测,我会得到这个输入

3b => allow
4b => allow
55b => allow
1111bbbb => allow
num45 => no !

如果我确实允许,我还想删除所有不是数字的字符

3b => 3
555B => 555
11 => 11

我试图检查给定的输入是否为数字,但这种情况超出了我的知识范围。

感谢您的时间和考虑。

4

5 回答 5

2

您可以使用:

/\A(\d+)[a-z]*\z/i

如果表达式与您想要的数字匹配,则将在第一个捕获组中。

Rubular的示例。(它使用^/$而不是\A/\z只是为了演示,你应该使用\A/ \z。)

于 2013-03-10T00:09:37.553 回答
2

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

input = '45num'

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

result => 45
于 2013-03-10T00:09:47.943 回答
1

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

于 2013-03-10T00:25:32.743 回答
0

嗯,我不是正则表达式忍者,但我认为您可以使用:^([\d]+)来捕获数字。在这里试一试

于 2013-03-10T00:07:53.443 回答
-1

如果字符串以数字开头

!/^[0-9]/.match(@variable).nil?

如果是,则仅获取数字部分

   @variable = @variable.gsub(/[^0-9]/, '')
于 2013-03-10T00:02:56.510 回答