Validate form input fields with clear Groovy errors

Groovy
def validate(Map input) {
    Map<String, String> errors = [:]
    String name = input.name?.trim()
    if (!name) errors.name = 'is required'
    else if (name.length() > 40) errors.name = 'must be at most 40 characters'
    String email = input.email?.trim()
    if (!email || !(email ==~ /^[^@ ]+@[^@ ]+[.][^@ ]+$/)) errors.email = 'is not a valid email'
    if (!(input.age instanceof Number) || input.age < 18) errors.age = 'must be a number of at least 18'
    errors
}

def payload = [name: '  ', email: 'nope', age: '30']
def errors = validate(payload)
if (errors) {
    errors.each { field, message -> println "$field $message" }
} else {
    println 'ok'
}