javascript - 是的,使用匹配问题使用正则表达式进行验证

标签 javascript reactjs typescript validation yup

所以我使用 Yup 进行了以下验证:

const myValidtion = yup
.string()
.trim()
.matches(/[abcdefghijklmnopqrstuvwxyz]+/ , 'Is not in correct format')
.required();

因此,这将按预期通过:hello world。但是让我感到困惑的是为什么这也会通过:hello WORLD 或者这也会通过:hello ,&$#$ world

另一方面,如果我们只输入像 *%$&#$($# 这样的无效字符,这将不会通过并向我显示错误。正如我所见,这只会给我如果ALL条目无效,则错误。

我正在寻找的是如何使用 Yup matches 方法在用户输入时不通过,例如:hello ,*&) world

谁能帮我解决这个问题?

最佳答案

你的正则表达式应该覆盖你的整个字符串,使用 ^$ 来表示字符串的开始和结束:

/^[abcdefghijklmnopqrstuvwxyz]+$/

否则,它将匹配您的字符串的一部分,这就是为什么当您混合使用好字符和坏字符时它会匹配,但当每个字符都是坏字符时它会失败。

您可以使用这样的字符范围来缩短正则表达式:

/^[a-z]+$/

您可以使用这个 online tool构建和测试您的正则表达式。

关于javascript - 是的,使用匹配问题使用正则表达式进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54405911/

相关文章:

javascript - Nodejs异步递归文件夹大小

javascript - onClick按钮将State设置为reactjs中的值而不是未定义

javascript - 将 Angular 1.x Controller 转换为 TypeScript 时出现问题

javascript - 使用 .classList 向已经具有该类的元素添加类是否有任何危害

javascript - 将带有 SVG 层的传单图导出为图像

javascript - 从扩展程序中获取当前 URL?

momentJS 上的 Typescript 模块系统表现异常

javascript - ReactJS ReactCSSTransitionGroup 仅在初始加载时设置动画

javascript - 导入的函数未定义

css - Angular 2 @Component 样式