/** * Rules */ module.exports = { required: /.+/, digits: /^\d+$/, email: /^[^@]+@[^@]+\..{2,6}$/, username: /^[a-z](?=[\w.]{3,31}$)\w*\.?\w*$/i, pass: /(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}/, strongpass: /(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/, phone: /^[2-9]\d{2}-\d{3}-\d{4}$/, zip: /^\d{5}$|^\d{5}-\d{4}$/, url: /^(?:(ftp|http|https):\/\/)?(?:[\w\-]+\.)+[a-z]{2,6}([\:\/?#].*)?$/i, number: function(input, value) { return !isNaN(value); }, range: function(input, value, min, max) { return Number(value) >= min && Number(value) <= max; }, min: function(input, value, min) { return value.length >= min; }, max: function(input, value, max) { return value.length <= max; }, minoption: function(input, value, min) { return this._getRelated(input).filter(':checked').length >= min; }, maxoption: function(input, value, max) { return this._getRelated(input).filter(':checked').length <= max; }, minmax: function(input, value, min, max) { return value.length >= min && value.length <= max; }, select: function(input, value, def) { return value != def; }, extension: function(input) { var extensions = [].slice.call(arguments, 1) , valid = false; $.each(input.files || [{name: input.value}], function(i, file) { valid = $.inArray(file.name.split('.').pop().toLowerCase(), extensions) > -1; }); return valid; }, equalto: function(input, value, target) { var self = this , $target = $('[name="'+ target +'"]'); if (this.getInvalid().find($target).length) return false; $target.off('keyup.equalto').on('keyup.equalto', function() { self._getField(input).removeData('idealforms-value'); self._validate(input, false, true); }); return input.value == $target.val(); }, date: function(input, value, format) { format = format || 'mm/dd/yyyy'; var delimiter = /[^mdy]/.exec(format)[0] , theFormat = format.split(delimiter) , theDate = value.split(delimiter); function isDate(date, format) { var m, d, y; for (var i = 0, len = format.length; i < len; i++) { if (/m/.test(format[i])) m = date[i]; if (/d/.test(format[i])) d = date[i]; if (/y/.test(format[i])) y = date[i]; } if (!m || !d || !y) return false; return m > 0 && m < 13 && y && y.length == 4 && d > 0 && d <= (new Date(y, m, 0)).getDate(); } return isDate(theDate, theFormat); } };