First tries to extract only digits, separating these by underscore
when there are multiple blocks. If this give a non-valid id, returns the
whole string without spaces and periods, hoping it makes sense.
For internal use, but should be overridden for exotic IDs