javascript - 是的正则表达式匹配器

标签 javascript regex string user-input yup

我正在努力使用 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/

相关文章:

regex - 这个上下文无关文法是正则表达式吗?

wpf - 如何在 WPF 中提供字符串文字值作为绑定(bind)

从主字符串中提取双引号中的子字符串的 JavaScript 正则表达式

javascript - 如何对 Angular 分割 html 元素

regex - 如何仅从此字符串获取链接?

javascript - 在 Wordpress 中使用 requireJS

java - 如何使用 Jsoup 从网页中提取多个电子邮件地址?

algorithm - 字符串转置算法

javascript - 检测网站的其他用户何时打字

javascript - 用于检查文件扩展名的 javascript 问题