in reply to Identifying and parsing numbers

You know you need at least one digit. So you can use lookahead, to test for it:
/^([+-]?(?=\d|\.\d)\d*\.?\d*)([a-z]+)$/
Or you can make a regex out of alternatives:
/^([+-]?(?:\d+\.?\d*|\.\d+))([a-z]+)$/