added Url validation

This commit is contained in:
2023-02-17 14:12:05 +10:00
parent 9f42f92c2e
commit ebe1069a7f

View File

@@ -739,3 +739,44 @@ export function Required(
},
};
}
/**
* Url
*/
interface ValidationUrlOptions {
invalidMessage?: string | ((options: ValidationUrlOptions) => string);
}
interface ValidationUrlObject extends ValidationUrlOptions {
validate: (value: string) => ValidationResult;
}
const defaultValidationUrlOptions: ValidationUrlOptions = {
invalidMessage: "Not a supported Url format.",
};
/**
* Validate field is in a valid Email format
*
* @param options options data
* @returns ValidationEmailObject
*/
export function Url(options?: ValidationUrlOptions): ValidationUrlObject {
options = { ...defaultValidationUrlOptions, ...(options || {}) };
return {
...options,
validate: function (value: string): ValidationResult {
return {
valid: /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*(:\d+)?([/?#][^\s]*)?$/.test(
value
),
invalidMessages: [
typeof this.invalidMessage === "string"
? this.invalidMessage
: this.invalidMessage(this),
],
};
},
};
}