我有一个字段要验证它是用户名还是邮件地址。我正在使用Yup进行验证,但在设置正确的Yup模式时遇到了问题。
如果输入既不是邮件地址也不是用户名,则验证应该失败。换句话说,必须满足这两个条件之一才能通过验证。
let schema = yup.object().shape({
email: yup.string().email(),
});
// username pattern
var pattern = new RegExp(/^(?=[a-zA-Z0-9._]{5,25}$)[^_.].*[^_.]$/);
要验证和执行验证,您可以在Yup中使用以下形状的字段:
Yup.string()
.required('Required Field')
.test('is-email', 'Invalid email', (value) => {
if (value) {
return value.includes('@') ? Yup.string().email().isValidSync(value) : true
}
return true
}),
您可以使用.test方法以相同的方式将regex添加到用户名中