@moohng/validator
Advanced tools
Comparing version 1.2.1 to 1.3.0
@@ -1,1 +0,1 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).validator=t()}(this,function(){"use strict";var e=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},t=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),n=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,n),Object.assign(this,t)}return t(n,[{key:"hasError",value:function(){return Object.keys(this).length>0}},{key:"first",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return Object.values(this)[e-1]}},{key:"firstKey",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return Object.keys(this)[e-1]}}]),n}();return function(e,t){var o=t?Object.keys(t):[];if(!o.length)return new i;var u=o.reduce(function(i,o){var u=e[o],a=null,f=t[o]||{},l=f.required,s=f.pattern,c=f.validate,v=f.alias,y=void 0===v?o:v,d=f.message,p=void 0===d?"请输入正确的"+y:d,g=f.trim;if((void 0===g||g)&&"string"==typeof u&&(u=u.trim()),void 0!==u&&null!==u&&u.length&&"{}"!==JSON.stringify(u)){if(s&&s instanceof RegExp&&!s.test(u))a=p;else if("function"==typeof c){var b=c(u,e);a="string"==typeof b?b:b?null:p}}else l&&(a="string"==typeof l?l:"请输入"+y);return a?r({},i,n({},o,a)):r({},i)},{});return new i(u)}}); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).validator=t()}(this,function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),r=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),Object.assign(this,n)}return n(e,[{key:"hasError",value:function(){return Object.keys(this).length>0}},{key:"first",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return Object.values(this)[e-1]}},{key:"firstKey",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return Object.keys(this)[e-1]}}]),e}();return function(t,n){var u=n?Object.keys(n):[];if(!u.length)return new i;var f=u.reduce(function(i,u){var f=n[u]||{};"boolean"==typeof f&&(f={required:f}),"string"==typeof f&&(f={required:!0,alias:f});var a=t[u],l=void 0===a||null===a||""===a||Number.isNaN(a)||"{}"===JSON.stringify(a)||"[]"===JSON.stringify(a),s=f,c=s.required,y=s.pattern,v=s.validate,d=s.alias,p=void 0===d?u:d,b=s.message,g=void 0===b?"请输入正确的"+p:b,h=s.trim,m=void 0===h||h,O=s.min,j=void 0===O?0:O,k=s.max,w=void 0===k?0:k,S=s.length,N=void 0===S?0:S;m&&"string"==typeof a&&(a=a.trim());var x=null;if(c&&l)x="string"==typeof c?c:"请输入"+p;else if(!l&&N&&a.length!==N||(j&&e(/^\d+$/.test(a))?a<j:a.length<j)||(w&&e(/^\d+$/.test(a))?a>w:a.length>w)||y&&y instanceof RegExp&&!y.test(a))x=g;else if(!l&&"function"==typeof v){var q=v(a,t);x="string"==typeof q?q:q?null:g}return x?o({},i,r({},u,x)):o({},i)},{});return new i(f)}}); |
@@ -30,13 +30,45 @@ import Result from './Result' | ||
if (!ruleKeys.length) return new Result() | ||
const results = ruleKeys.reduce((errors, key) => { | ||
// 规则 | ||
let rule = rules[key] || {} | ||
typeof rule === 'boolean' && (rule = { required: rule }) | ||
typeof rule === 'string' && (rule = { required: true, alias: rule }) | ||
// 输入值 | ||
let value = target[key] | ||
let tips = null | ||
const { required, pattern, validate, alias = key, message = `请输入正确的${alias}`, trim = true } = rules[key] || {} | ||
const isEmpty = ( | ||
value === undefined || | ||
value === null || | ||
value === '' || | ||
Number.isNaN(value) || | ||
JSON.stringify(value) === '{}' || | ||
JSON.stringify(value) === '[]' | ||
) | ||
const { | ||
required, | ||
pattern, | ||
validate, | ||
alias = key, | ||
message = `请输入正确的${alias}`, | ||
trim = true, | ||
min = 0, | ||
max = 0, | ||
length = 0, | ||
} = rule | ||
// 去掉字符串首位空格 | ||
trim && typeof value === 'string' && (value = value.trim()) | ||
if (value === undefined || value === null || !value.length || JSON.stringify(value) === '{}') { | ||
required && (tips = typeof required === 'string' ? required : `请输入${alias}`) | ||
} else if (pattern && pattern instanceof RegExp && !pattern.test(value)) { // 正则校验 | ||
let tips = null | ||
if (required && isEmpty) { | ||
tips = typeof required === 'string' ? required : `请输入${alias}` | ||
} else if ( | ||
!isEmpty && | ||
(length && value.length !== length) || // 长度校验 | ||
(min && typeof /^\d+$/.test(value) ? value < min : value.length < min) || // 最小值校验 | ||
(max && typeof /^\d+$/.test(value) ? value > max : value.length > max) || // 最大值校验 | ||
(pattern && pattern instanceof RegExp && !pattern.test(value)) // 正则校验 | ||
) { | ||
tips = message | ||
} else if (typeof validate === 'function') { // 自定义校验函数 | ||
} else if (!isEmpty && typeof validate === 'function') { // 自定义校验函数 | ||
const res = validate(value, target) | ||
@@ -47,3 +79,4 @@ tips = typeof res === 'string' ? res : (!res ? message : null) | ||
}, {}) | ||
return new Result(results) | ||
} |
{ | ||
"name": "@moohng/validator", | ||
"version": "1.2.1", | ||
"version": "1.3.0", | ||
"description": "一款简单、轻量的字段校验工具", | ||
@@ -5,0 +5,0 @@ "main": "dist/validator.min.js", |
const validator = require('../dist/validator.min') | ||
const rules = { | ||
name: { | ||
alias: '姓名', | ||
required: true | ||
}, | ||
name: '姓名', | ||
email: { | ||
required: '请输入邮箱哦', | ||
// length: 8, | ||
min: 8, | ||
max: 8, | ||
// pattern: /\w+@\w+\.com/, | ||
@@ -11,0 +11,0 @@ validate(value) { |
144160
219