如何用Yup实现X.X格式字符串验证(X为0-9数字)
解决Yup验证“X.X”格式字符串的问题
直接修改matches方法的正则表达式就能实现精准验证,替换成严格匹配数字.数字格式的规则即可:
myString: Yup.string() .matches(/^\d\.\d$/, '格式必须为 X.X,其中X是0-9的数字') .nullable(),
正则说明:
^标记字符串的起始位置\d匹配0-9之间的任意单个数字(和[0-9]效果一致)\.匹配点号(点在正则中是通配符,必须加反斜杠转义才能匹配实际的点)$标记字符串的结束位置
这个正则会直接限定字符串长度为3,且严格符合第一位、第三位是数字,中间是点的要求,不需要额外的min(3)和max(3)验证(当然保留也不会冲突,不过正则已经完全覆盖了长度和格式要求)。
你之前的验证规则里,matches(/^[0-9]+$/)是要求字符串全为数字,这和你需要的包含点号的格式冲突,所以才会出现验证不精准的问题。
内容的提问来源于stack exchange,提问作者Cucumberbatch
相关产品推荐
相关产品推荐

