我正在努力使用 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
。
关于javascript - 是的正则表达式匹配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59040509/