reactjs - 在使用 YUP 的电子邮件验证中只允许 ASCII 字符
问题描述
我正在使用 React 和 Yup 来验证电子邮件地址。
我的架构如下所示:
const registrationSchema = yup.object().shape({
email: yup.string().email().required()
})
我的代码是这样的:
const handleOnSubmit = async () => {
const formData = {
email: props.emailInput
}
const isValid = await registrationSchema.isValid(formData)
setInputErrorState(isValid ? false : true)
}
上面的代码正在进行验证,但如果我输入一个非 ASCII 字符,如日文或中文字符,它就不起作用。例如:ハロー@ハロー.com
正在通过验证。
如何在 YUP 验证中只允许 ASCII 或罗马字符?
理想场景:
- attack.on.titan@gmail.com ✅</li>
- black@clover.com ✅</li>
- ハロー@ハロー.com ❌</li>
解决方案
使用正则表达式试试这个
const isEmail = email => {
const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if (re.test(String(email).toLowerCase())) {
return email;
} else {
return false;
}
};
推荐阅读
- vb.net - VB 尝试调用具有多个输出的函数,得到“无法将 'System.Object[,]' 类型的对象转换为 'System.String[,]' 类型。” 错误
- r - 如何从R中96孔微孔板的荧光图像中提取像素值
- javascript - EditorJS 在点击时自动对焦
- awk - 计算每行重复的列
- app-store - Apple TV 产品页面壁纸?
- c++ - C++ 中的“类”类型重新定义错误 C2011
- azure - 如何使用 Python Azure Functions QueueTrigger 手动将消息出列?
- javascript - 为什么有条件时html标签不呈现?
- angular - 如何通过该服务的测试套件将不同的依赖模拟注入到服务中?
- python - 输入 n 个不同的正数。计算其中所有素数的平均值。[Python]