Functional, validation, regex not perfect