Input validation should happen as early as possible in the data flow, preferably as soon as the data is received from the external party.
There are no required external dependencies at all!
Though for the datetime and date validator to you need to specify a parse and format function and for that you most likely will want to use a library, is highly recommended.
If you want to use async validation you need to use a runtime that supports Promises.
Because of this one may be tempted to simply copy the best regex you can find (gist).
The problem with this is that while you can copy it now, what happens later when you find a case that is not handled correctly?