merged rickharrison's latest version
added rules for numeric_or_empty, integer_or_empty, decimal_or_empty, is_natural_or_empty