Ruby 如何验证字符串只包含0和1?

Ruby 如何验证字符串只包含0和1?,ruby,string,validation,Ruby,String,Validation,我有一个字符串,它应该只由0和1组成。如果字符串有任何其他字符(包括特殊字符),则验证应返回false;否则它应该返回一个true 如何实现这一点?使用 以下是一种方法: def only_1_and_0(s) !(/[^10]/ === s) end only_1_and_0('11012') # => false only_1_and_0('1101') # => true 使用 以下是一种方法: def only_1_and_0(s) !(/[^10]/ === s

我有一个字符串,它应该只由
0
1
组成。如果字符串有任何其他字符(包括特殊字符),则验证应返回false;否则它应该返回一个true

如何实现这一点?

使用

以下是一种方法:

def only_1_and_0(s)
  !(/[^10]/ === s)
end

only_1_and_0('11012') # => false
only_1_and_0('1101') # => true
使用

以下是一种方法:

def only_1_and_0(s)
  !(/[^10]/ === s)
end

only_1_and_0('11012') # => false
only_1_and_0('1101') # => true
试试这个:

def only_0_and_1(str)
  return !!(str =~ /^(0|1)+$/)
end
试试这个:

def only_0_and_1(str)
  return !!(str =~ /^(0|1)+$/)
end

以下假设您的方法将始终接收字符串;它不执行任何强制或类型检查。如果您需要,可以随意添加

def binary? str
  ! str.scan(/[^01]/).any?
end
这将扫描字符串中除0或1以外的任何字符,然后返回一个反向布尔值,如果为true,则该值将计算为false,这意味着字符串中存在其他字符。例如:

binary? '1011'
#=> true

binary? '0b1011'
#=> false

binary? '0xabc'
#=> false

以下假设您的方法将始终接收字符串;它不执行任何强制或类型检查。如果您需要,可以随意添加

def binary? str
  ! str.scan(/[^01]/).any?
end
这将扫描字符串中除0或1以外的任何字符,然后返回一个反向布尔值,如果为true,则该值将计算为false,这意味着字符串中存在其他字符。例如:

binary? '1011'
#=> true

binary? '0b1011'
#=> false

binary? '0xabc'
#=> false
另一种方法是:

str.chars.any?{|c| c!='0' && c!='1'}
另一种方法是:

str.chars.any?{|c| c!='0' && c!='1'}