The pattern for amount is  `"/(-)?(\d+)([.,])?(\d)?(\d)?/"` as you can see in stringToAmount. But's better to simply split the string, have the first part handled by stringToAmount() and the second by Currency. That will avoid the duplicate validation.