是的正则表达式匹配器

Yup regex matcher

我正在努力使用 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 的 "Name is not valid" 错误。

"Tester 1" 应该通过,"Tester!% 2" 应该失败

我该如何解决这个问题?

你的表达与你需要的相反。那是因为你的角色 class 以否定运算符开头:[^x] 意味着除了 x.

从你的角色中删除否定 class 应该有效。

/^[a-zA-Z0-9 ]+$/

请记住,您的表达式需要特定的拉丁字母子集 (a-z),并且将无法匹配 François 例如。