module Iz class CreditCard REGEX = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/ attr_accessor :number def initialize(credit_card_number) self.number = credit_card_number end def valid? Iz::CreditCard.is_credit_card?(number) end def self.is_credit_card?(number) number.to_s =~ REGEX end end end