Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

survey.answer.validator.js 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import Joi from 'joi'
  2. import domains from './tlds-alpha-by-domain.js'
  3. const answerValidator = {
  4. name: Joi.string().min(2).max(50).required(),
  5. email: Joi.string().email({
  6. minDomainSegments: 2,
  7. tlds: { allow: domains },
  8. }),
  9. // TODO: password validation is a moving target with regex,
  10. // consider using a more robust library?
  11. password: Joi.string()
  12. .min(14)
  13. .max(30)
  14. .pattern(
  15. new RegExp(
  16. '^(?=.*[!@#$%^&*()_+\\-=[\\]{};\':"\\\\|,.<>\\/?])(?=.*[!@#$%^&*()_+\\-=[\\]{};\':"\\\\|,.<>\\/?])[a-zA-Z0-9!@#$%^&*()_+\\-=[\\]{};\':"\\\\|,.<>\\/?]{10,}$',
  17. ),
  18. ),
  19. // TODO: Change if going international (only works in usa)
  20. zipcode: Joi.string().min(5).max(5).pattern(new RegExp('^[0-9]{5}$')),
  21. seeking: Joi.string(),
  22. urgency: Joi.string(),
  23. presence: Joi.string(),
  24. duration: Joi.string(),
  25. pronouns: Joi.string(),
  26. language: Joi.string(),
  27. image: Joi.any(),
  28. // NOTE: Allows 1 to 3 digits and then distance metric
  29. distance: Joi.string()
  30. .min(4)
  31. .max(15)
  32. .pattern(new RegExp('^\\d{1,3}(\\.\\d{1,2})?\\s?(mi|km|mile|miles|kilometer|kilometers)$')),
  33. blurb: Joi.string().max(200),
  34. value: Joi.string(),
  35. aspect: Joi.number(),
  36. }
  37. export { answerValidator }