我正在努力使用 Yup 创建一个成功的正则表达式。我想验证一个字符串,它只接受字母、数字和空格。任何其他字符都会使整个字符串无效。这是我的代码:
const nameRegex = /^[^a-zA-Z0-9 ]+$/g;
export const Schema = Yup.object().shape({
name: Yup.string()
.required('Name is Required')
.matches(nameRegex, 'Name is not valid')
});
无论我使用什么字符串,我都会收到来自 Yup 的"名称无效"错误。
"Tester 1"
应该通过,"Tester!% 2"
应该失败
我该如何解决这个问题?
您拥有的表达式与您需要的表达式相反。这是因为您的字符类以否定运算符开头:[^x]
表示除 x 以外的任何内容。
从字符类中删除否定应该有效。
/^[a-zA-Z0-9 ]+$/
请记住,您的表达式需要特定的拉丁字母子集 (a-z(,并且无法匹配François
例如。