所以我使用以下验证Yup https://github.com/jquense/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
谁能帮我这个?
你的正则表达式应该覆盖你的整个字符串,通过使用^
and $
表示字符串的开始和结束:
/^[abcdefghijklmnopqrstuvwxyz]+$/
否则,它将匹配字符串的一部分,这就是为什么当您混合有好字符和坏字符时它会匹配,但当每个字符都是坏字符时它会失败。
您可以使用如下字符范围来缩短正则表达式:
/^[a-z]+$/
你可以用这个在线工具 https://regex101.com/构建并测试您的正则表达式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)