校验数据
Example
js
/**
* @method 验证类型
* @param { Object | required } rules - 校验规则.
* @param { Array | required } data - 数据.
* @return { Boolean | rules[key] } 返回值描述: 如果校验成功则返回 true, 校验失败返回校验的规则
**/
var flag = validation(
{
price: [
{
type: 'empty',
},
{
type: 'money',
},
],
name: {
type: 'empty',
},
custom: {
validation: data => /123456/.test(data),
},
},
{ price: '123', name: 456 }
)
if (flag === true) {
// 校验成功
} else {
// 校验失败
console.log(flag)
}
Framework
js
import { validation } from 'wgl-utils';
// import validation from 'wgl-utils/es/validation.mjs';
Browser
html
<script type="module">
import { validation } from 'wgl-utils/main.mjs';
// import validation from 'wgl-utils/es/validation.mjs';
</script>
html
<!-- 全量引入 -->
<script src="wgl-utils/main.js"></script>
<script>
Wgl.validation();
</script>
Code
js
// src/validation.js
/**
* @overview 根据校验规则校验数据,执行传入的回调函数,返回校验结果
* @method 验证类型
* @param { Object | required } rules - 校验规则.
* @param { Array | required } data - 数据.
* @return { Boolean | rules[key] } 返回值描述: 如果校验成功则返回 true, 校验失败返回校验的规则
**/
export default (() => {
const Rules = {
empty: data =>
data !== null &&
data !== undefined &&
(!Array.isArray(data) || data.length !== 0) &&
(Object.prototype.toString.call(data) !== '[object Object]' ||
JSON.stringify(data) !== '{}') &&
(typeof data !== 'string' || data.replace(/\s+/g, '').length !== 0) &&
!(typeof data !== 'number' && !data),
// 校验是否以http或https开头的url
url: data => /^(http|https):/.test(data),
// 钱
money: data =>
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(
data
),
// 纯英文
alphabets: data => /^[A-Za-z]+$/.test(data),
// 浮点数
float: data => /^-?[1-9]\d*\.\d+$|^-?0\.\d+$|^-?[1-9]\d*$|^0$/.test(data),
// 汉字
chinese: data => /^[\u4e00-\u9fa5]{0,}$/.test(data),
placeholder: () => true,
email: data =>
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(
data
),
};
/**
* @method 传入一个公用data,返回一个可执行函数
* @param { Object | required } data - 数据.
* @return { Function }
**/
const CacheData = data => (field, rule) => {
const { type, validation, success, error } = rule;
const pass = validation
? validation(data[field])
: Rules[type](data[field]);
pass ? success?.(rule) : error?.(rule);
return pass;
};
return (rules, data) => {
const Validation = CacheData(data);
for (let field in rules) {
// 多个校验规则
if (Array.isArray(rules[field])) {
for (let i = 0; i < rules[field].length; i++) {
if (rules[field]) {
if (!Validation(field, rules[field][i])) {
return rules[field][i];
}
}
}
} else {
// 单个校验规则
if (!Validation(field, rules[field])) {
return rules[field];
}
}
}
return true;
};
})();
js
// dist/es/validation.mjs
var t={};t.Z=(()=>{const t={empty:t=>!(null==t||Array.isArray(t)&&0===t.length||"[object Object]"===Object.prototype.toString.call(t)&&"{}"===JSON.stringify(t)||"string"==typeof t&&0===t.replace(/\s+/g,"").length||"number"!=typeof t&&!t),url:t=>/^(http|https):/.test(t),money:t=>/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(t),alphabets:t=>/^[A-Za-z]+$/.test(t),float:t=>/^-?[1-9]\d*\.\d+$|^-?0\.\d+$|^-?[1-9]\d*$|^0$/.test(t),chinese:t=>/^[\u4e00-\u9fa5]{0,}$/.test(t),placeholder:()=>!0,email:t=>/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(t)};return(e,r)=>{const s=(e=>(r,s)=>{const{type:a,validation:n,success:l,error:o}=s,i=n?n(e[r]):t[a](e[r]);return i?l?.(s):o?.(s),i})(r);for(let t in e)if(Array.isArray(e[t])){for(let r=0;r<e[t].length;r++)if(e[t]&&!s(t,e[t][r]))return e[t][r]}else if(!s(t,e[t]))return e[t];return!0}})();var e=t.Z;export{e as default};
//# sourceMappingURL=validation.mjs.map