I am trying to verify that a string corresponds to this format "x.x" with x, a digit belonging to [0-9].
Right now, what I am doing is:
- checking that the string is at least, and at most, made of 3 characters
- checking that the string matches the regex [0-9.] (only digits and a dot)
So right now, I have:
myString: Yup.string()
.min(3, "Minimum 3 caractères: XXX.")
.max(3, "Maximum 3 caractères: XXX.")
.matches(/^[0-9]+$/, 'Doit contenir seulement des caractères numériques.')
.nullable(),
Is there a way for me to:
- check that myString[0] and myString[2] are digits
- check that myString[1] is a dot
3
Answers
What about just using the
matches
and pass a regex that validates the list of requirements in one go?Here
d{3,}
matches a number with min 3 digits long followed by a dot.
followed by anotherd{3,}
.You can improve your code just using regex, like in your case:
d
validates whether first and last characters are digits with second character being a.
Since you only need one number its
d{1}
before and after the dot.Edit:
As @bobble bubble mentioned and after testing
d{1}
is actually redundant. In your case, the regex pattern is^d.d$
. You can use the above pattern if you want to increase the digit count.Another way is to use
/^[0-9][.][0-9]$/
, which I think is easier to read. Here is an example with tests:With Yup, in your case, it would be:
Also, you can copy past the RegEx in regexr.com to get an explanation of each part of it.