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 or not).