input-is
Version:
Simple input validation
169 lines (128 loc) • 3.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var isValidDate = function isValidDate(value, format) {
var date = void 0;
var day = void 0;
var month = void 0;
var year = void 0;
var valid = void 0;
if (format === 'YYYY-DD-MM') {
date = value.split('-');
year = date[0];
day = date[1];
month = date[2];
} else if (format === 'YYYY-MM-DD') {
date = value.split('-');
year = date[0];
month = date[1];
day = date[2];
} else if (format === 'MM-DD-YYYY') {
date = value.split('-');
month = date[0];
day = date[1];
year = date[2];
} else if (format === 'DD-MM-YYYY') {
date = value.split('-');
day = date[0];
month = date[1];
year = date[2];
} else if (format === 'YYYY/MM/DD') {
date = value.split('/');
year = date[0];
month = date[1];
day = date[2];
} else if (format === 'YYYY/DD/MM') {
date = value.split('/');
year = date[0];
day = date[1];
month = date[2];
} else if (format === 'MM/DD/YYYY') {
date = value.split('/');
month = date[0];
day = date[1];
year = date[2];
} else if (format === 'DD/MM/YYYY') {
date = value.split('/');
day = date[0];
month = date[1];
year = date[2];
}
day = Number(day);
month = Number(month);
year = Number(year);
var dateToCheck = new Date();
dateToCheck.setFullYear(year, month - 1, day);
if (dateToCheck.getFullYear() === year && dateToCheck.getMonth() + 1 === month && dateToCheck.getDate() === day) {
valid = true;
} else {
valid = false;
}
return valid;
};
var isValidTime = function isValidTime(value) {
var regEx = /^([0-1][0-9]|2[0-3]):([0-5][0-9])(:[0-5][0-9])?$/;
return regEx.test(value);
};
var inputIs = {
date: function date(value, format) {
return isValidDate(value, format);
},
datetime: function datetime(value, format) {
var date = value.includes('T') ? value.split('T')[0] : value.split(' ')[0];
var time = value.includes('T') ? value.split('T')[1] : value.split(' ')[1];
var validDate = isValidDate(date, format);
var validTime = isValidTime(time);
return validDate && validTime;
},
email: function email(value) {
var regEx = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
return regEx.test(value);
},
exactly: function exactly(value, target) {
return value === target;
},
filled: function filled(value) {
return value.length > 0;
},
float: function float(value) {
var regEx = /^\d+\.\d+$/;
return regEx.test(value);
},
integer: function integer(value) {
var regEx = /^\d+$/;
return regEx.test(value);
},
max: function max(value, target) {
return value.length <= target;
},
min: function min(value, target) {
return value.length >= target;
},
not: function not(value, target) {
return value !== target;
},
number: function number(value) {
return !isNaN(value);
},
partOf: function partOf(value, characters) {
return characters.includes(value);
},
phonenumber: function phonenumber(value) {
var regEx = /^[+]?[(]?[0-9]{3}[)]?[-\s.]?[0-9]{3}[-\s.]?[0-9]{4,10}$/;
return regEx.test(value);
},
time: function time(value) {
return isValidTime(value);
},
url: function url(value) {
var regEx = /^(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9]\.[^\s]{2,})$/;
return regEx.test(value);
},
valid: function valid(value, regEx) {
return regEx.test(value);
}
};
exports.default = inputIs;
module.exports = exports['default'];