From 67b286ad267991d3a166f625f9cfadd635e46508 Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 16 Jul 2018 16:52:53 +0200 Subject: [PATCH] WA-232 Add form URL validator --- src/components/forms/validator.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/components/forms/validator.js b/src/components/forms/validator.js index 8089f2ee..b921f103 100644 --- a/src/components/forms/validator.js +++ b/src/components/forms/validator.js @@ -20,6 +20,16 @@ export const greaterThan = (min: number) => (value: string) => { return `Should be greater than ${min}` } +const regexQuery = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,}))\.?)(?::\d{2,5})?(?:[/?#]\S*)?$/i +const url = new RegExp(regexQuery) +export const mustBeUrl = (value: string) => { + if (url.test(value)) { + return undefined + } + + return 'Please, provide a valid url' +} + export const minValue = (min: number) => (value: string) => { if (Number.isNaN(Number(value)) || Number.parseFloat(value) >= Number(min)) { return undefined