是的验证验证 formki 字段是否以其他输入字段的值开始

yup validation to Validate formki field whether starts with value of other input field

我的表单中有 2 个字段,比如 carriercode 和 billnum,这里我需要验证号码应该始终具有 carriercode 的值作为前缀,例如,如果 carriercode=ABCD blnum 应该是ABCD后跟任何字符可以是字符串或数字。

return Yup.object({
    carriercode: Yup.string().required(requiredMessage).min(4,"length should be 4").matches(/^[a-zA-Z0-9-]+$/,"Can not contain special characters like ),(,@ etc."),
    blnum: Yup.string().required(requiredMessage) //validate if blnum starts with carriercode
     
  })
}

有什么方法可以使用 yup 验证来实现这一点,为了简单起见,我需要在 yup 中使用类似 startsWith/indexOf 的功能。

test 方法可以是其中之一。在 test 方法中,您可以使用 this.parent['carriercode'] 访问其他字段(此处 carriercode)。只需像这样制作一个自定义验证器:

Yup.object({
    carriercode: Yup.string().required(requiredMessage).min(4, "length should be 4").matches(/^[a-zA-Z0-9-]+$/, "Can not contain special characters like ),(,@ etc."),
    blnum: Yup.string()
        .required("Should be the prefix of carriercode") //validate if blnum starts with carriercode
        .test("Check prefix", function () {
            let carriercode = this.parent["carriercode"];
            let blnum = this.parent["blnum"];
            // console.log(carriercode, blnum);
            if (carriercode && blnum) {
                return blnum.startsWith(carriercode) ? true : false;
            }
        })
})