Как проверить необязательные, поданные в 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"]]
);

Кредит на этот пост: Да, проверка необязательных полей

Пожалуйста, обратите внимание на второй параметр функции формы. это предотвратит циклическую проверку информации о себе. (попробуйте без, чтобы увидеть разницу).

Другие вопросы по тегам