The second regexp in normalise() actually has an optional penny sign.
The methods in the model now return undefined on invalid input; added failing tests to catch that.