add support for underscores in number

something that'd be nice is if I could a regex like '[0-9]+(_[0-9]{3})+'
to work with the current implementation, because that would provide
extra error checking (whether the `_` are in the right place).