仅包含数字的输入的正则表达式数据验证

时间:2015-06-29 06:20:33

标签: ruby regex

我尝试提示用户输入数据值,并检查他们输入的字符串是否只包含数字0-9:

class String
    def validate(regex)
        !self[regex].nil?
    end
end

regex = /\A[0-9]\z/

validInput = false
until validInput
    puts "Enter digits: "
    input = gets.chomp
    if !input.validate(regex)
        puts "Invalid input. Seeking integer."
    else
        validInput = true

    end
end

然而,除了false之外的其他所有内容,此循环返回0。我以前使用过此regex = /\A[1-9]\z/,但我会回到它工作的地方,它不再存在,这也意味着用户无法输入0

如何使用正则表达式验证用户输入是否仅包含数字0-9?

2 个答案:

答案 0 :(得分:2)

+之后添加[1-9]量词(不应该是[0-9]你想要0到9的数字吗?)。即regex = /\A[0-9]+\z/

您可以将字符类[0-9]表示为\d,以便正则表达式看起来更整洁:\A\d+\z

+检查字符串中一个(最少)次出现的数字。现在,您正在检查是否只有 ONE 数字。

答案 1 :(得分:1)

s !~ /\D/

.....................