const Joi = require('joi');
const schema = Joi.object({
username: Joi.string().alphanum().min(3).max(30)
.required()
.messages({
'string.base': 'Username should be a string',
'string.alphanum': 'Username should only contain alphanumeric characters',
'string.min': 'Username should have at least {#limit} characters',
'string.max': 'Username should not exceed {#limit} characters',
'any.required': 'Username is required'
}),
email: Joi.string().email({ tlds: { allow: false } })
.required()
.messages({
'string.base': 'Email should be a valid string',
'string.email': 'Email should be a valid email address',
'any.required': 'Email is required'
}),
password: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$'))
.required()
.messages({
'string.base': 'Password should be a valid string',
'string.pattern.base': 'Password should be alphanumeric and between 3 to 30 characters',
'any.required': 'Password is required'
})
});
const data = {
username: 'john_doe',
email: '[email protected]',
password: 'pass123'
};
const { error, value } = schema.validate(data);
if (error) {
console.error(error.message);
} else {
console.log('Validation successful:', value);
}