Как проверить необязательные, поданные в Yup
Как проверить необязательные поля, которые не должны содержать следующие специальные символы #<`>
и пробел перед точкой (.) У меня есть Regex \`|\#|\&|\<|\ \.|\>
чтобы проверить вышеупомянутое условие, но не имею ни малейшего представления, как это регулярное выражение с yup.matches(). заранее спасибо
Regex: \`|\#|\&|\<|\ \.|\>
моя схема проверки:
const validationSchema = function (values) {
var regx = new RegExp(/\`|\#|\&|\<|\ \.|\>/gms);
return Yup.object().shape({
about: Yup.string()
.matches(expression, 'about should not contain ` # < > \n')
})
}
2 ответа
Предполагая, что ваше регулярное выражение работает, вы можете использовать функцию string.matches. Вот пример из документации:
var v = string().matches(/(hi|bye)/);
v.isValid('hi')
.should.eventually()
.equal(true);
v.isValid('nope')
.should.eventually()
.equal(false);
Смотрите это сегодня, пытаясь решить ту же проблему. Я знаю, что опаздываю!
return yup.object().shape(
{
about: yup
.string()
.nullable()
.notRequired()
.when("about", {
// WARNING required itself => add cyclic dep at the end of the yup shape
is: (value: string) => value?.length,
then: (rule) => rule.matches(regx, "about should not contain ` # < > \n"),
}),
},
// Add Cyclic deps here because when require itself
[["about", "about"]]
);
Кредит на этот пост: Да, проверка необязательных полей
Пожалуйста, обратите внимание на второй параметр функции формы. это предотвратит циклическую проверку информации о себе. (попробуйте без, чтобы увидеть разницу).