4 '[-+]' | '') return 1;; # empty or bare `-' or `+'
5 [-+]*[!0-9]*) return 1;; # non-digit with leading sign
7 *[!0-9]*) return 1;; # non-digit
12 # this one handles floating point
16 '') return 1;; # empty
17 *[!0-9.+-]*) return 1;; # non-digit, +, -, or .
18 *?[-+]*) return 1;; # sign as second or later char
19 *.*.*) return 1;; # multiple decimal points