@@ -1,4 +1,6 @@
import { validCronExpression as _validCronExpression } from "./cron " ;
import { z } from "zod " ;
import { validCronExpression as _validCronExpression } from "./cron" ;
export const validCronExpression = ( value : string ) = > {
return _validCronExpression ( value ) ;
@@ -10,20 +12,30 @@ export const validDomainName = (value: string, { allowWildcard = false }: { allo
} ;
export const validEmailAddress = ( value : string ) = > {
const re = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ ;
return re . test ( value ) ;
try {
z . string ( ) . email ( ) . parse ( value ) ;
return true ;
} catch ( _ ) {
return false ;
}
} ;
export const validIPv4Address = ( value : string ) = > {
const re =
/^(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$/ ;
return re . test ( value ) ;
try {
z . string ( ) . ip ( { version : "v4" } ) . parse ( value ) ;
return true ;
} catch ( _ ) {
return false ;
}
} ;
export const validIPv6Address = ( value : string ) = > {
const re =
/^([\da-fA-F]{1,4}:){6}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)|::([\da− fA− F]1,4:)0,4((25[0− 5]|2[0− 4]\d|[01]?\d\d?)\.)3(25[0− 5]|2[0− 4]\d|[01]?\d\d?)|::([\da− fA− F]1,4:)0,4((25[0− 5]|2[0− 4]\d|[01]?\d\d?)\.)3(25[0− 5]|2[0− 4]\d|[01]?\d\d?)|^([\da-fA-F]{1,4}:):([\da-fA-F]{1,4}:){0,3}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)|([\da− fA− F]1,4:)2:([\da− fA− F]1,4:)0,2((25[0− 5]|2[0− 4]\d|[01]?\d\d?)\.)3(25[0− 5]|2[0− 4]\d|[01]?\d\d?)|([\da− fA− F]1,4:)2:([\da− fA− F]1,4:)0,2((25[0− 5]|2[0− 4]\d|[01]?\d\d?)\.)3(25[0− 5]|2[0− 4]\d|[01]?\d\d?)|^([\da-fA-F]{1,4}:){3}:([\da-fA-F]{1,4}:){0,1}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)|([\da− fA− F]1,4:)4:((25[0− 5]|2[0− 4]\d|[01]?\d\d?)\.)3(25[0− 5]|2[0− 4]\d|[01]?\d\d?)|([\da− fA− F]1,4:)4:((25[0− 5]|2[0− 4]\d|[01]?\d\d?)\.)3(25[0− 5]|2[0− 4]\d|[01]?\d\d?)|^([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}|:((:[\da− fA− F]1,4)1,6|:)|:((:[\da− fA− F]1,4)1,6|:)|^[\da-fA-F]{1,4}:((:[\da-fA-F]{1,4}){1,5}|:)|([\da− fA− F]1,4:)2((:[\da− fA− F]1,4)1,4|:)|([\da− fA− F]1,4:)2((:[\da− fA− F]1,4)1,4|:)|^([\da-fA-F]{1,4}:){3}((:[\da-fA-F]{1,4}){1,3}|:)|([\da− fA− F]1,4:)4((:[\da− fA− F]1,4)1,2|:)|([\da− fA− F]1,4:)4((:[\da− fA− F]1,4)1,2|:)|^([\da-fA-F]{1,4}:){5}:([\da-fA-F]{1,4})?|([\da− fA− F]1,4:)6:|([\da− fA− F]1,4:)6:/ ;
return re . test ( value ) ;
try {
z . string ( ) . ip ( { version : "v6" } ) . parse ( value ) ;
return true ;
} catch ( _ ) {
return false ;
}
} ;
export const validHttpOrHttpsUrl = ( value : string ) = > {
@@ -36,5 +48,5 @@ export const validHttpOrHttpsUrl = (value: string) => {
} ;
export const validPortNumber = ( value : string | number ) = > {
return parseInt ( value + "" ) === + value && + value >= 1 && + value <= 65535 ;
return parseInt ( value + "" ) === + value && String ( + value ) === String ( value ) && + value >= 1 && + value <= 65535 ;
} ;