所以我使用 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/