I created a similar work for a project once. One thing I would suggest is optional (min,max) parameters. What they would do would depend on the context.
For int, float, other numbers, it could be used to make sure they are within a given range.
For date types that the time is within a given period.
For text that the length is within the allowed limits.
Also I would add TEXT and ALPHANUMERIC /^
\w-+$/ to your type list.
-Lee
"To be civilized is to deny one's nature."