# JsValidate **Repository Path**: nullfeng/js_validate ## Basic Information - **Project Name**: JsValidate - **Description**: 一个极其简单、快速的js验证器 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 42 - **Forks**: 7 - **Created**: 2018-05-31 - **Last Updated**: 2024-10-30 ## Categories & Tags **Categories**: javascript-toolkits **Tags**: None ## README # JsValidate ## 项目介绍 这是一个非常迷你的数据验证器,至于迷你到那种程度,就不形容了,一看便知! * 兼容 **AMD** 和 **CMD** 规范 * 核心代码50+行 绝对轻量级(确定绝对?) * 支持单个数据和数据批量验证 * 扩展性好 支持自定义验证(函数/正则) * 使用简单 几句代码便可完成复杂的验证 * 编不下去了... -_-b 下面是内置的规则,比较少,要添加的话,网上一搜一大把 ``` { 'number': '$0只能是数字', 'chinese': '$0只能是中文', 'email': '$0格式不正确', 'idcard': '$0格式不正确', 'phone': '$0格式不正确', 'require': '$0不能为空', 'length': '$0长度只能是$1到$2个字符', 'min': '$0至少$1个字符', 'max': '$0不能超过$1个字符', 'eq': '$0只能是$1', 'neq': '$0不能为$1', 'gt': '$0不能小于$1', 'lt': '$0不能大于$1', 'between': '$0值只能在$1到$2之间', 'in': '$0只能取$n', } ``` ## 使用说明 ### 为字段名增加中文名称 直接在规则中写上"@+名称"即可 举个栗子,不加@ ``` {'name':'require!必须写$0'} //必须写name ``` 加上之后 ``` {'name':'@姓名|require!必须写$0'} //必须写姓名 ``` ### 自定义消息 在规则名称后面加上“!”则为该条规则的自定义消息 ```$0```为字段名称 ```$1```..```$n```依次为后面的参数 ```$n```直接显示为参数(逗号隔开) ```:1```表示该参数为一个字段 例如```'confirm': '$0与:1不一致'```其中```:1```将替换为字段名而不是参数 ``` {'name':'@姓名|require!必须写$0'} //输出 必须写姓名 ``` ### 开始使用 先引入 `````` 然后直接使用 ``` /** * 检查数据 * @param rule 单或多条规则 * @param field 要检查的数据 * @param all 是否返回全部错误 * @return 检查通过返回true 失败返回 错误消息或错误消息集合 */ Validate.check(rule,field,all); /** * 添加或修改规则 * @param name 规则名称 * @param rule 规则内容(函数或正则) * @param msg 消息 * @return this */ Validate.rule(name,rule,msg); ``` ### 使用示例 ``` var rule = { 'name':'@姓名|require|chinese', 'idcard':'@身份证号码|require|idcard', 'type':'@类型|require|in:0,1', 'qq':'@QQ号码|require|number', 'email':'@电子邮箱|require|email', 'password':'@密码|require|len:6,10', 'password2':'@确认密码|confirm:password!确认密码不一致', 'like':'@喜欢的数字|require|in:0,1,2,3,4,5,6' },data = { 'name':'nullfeng', 'idcard':'50023619951105256a', 'type':0, 'qq':'', 'email':'nullfeng(at)163.com', 'password':'123123', 'password2':'456456', 'like': '8' }; /** * 验证全部的错误 */ var result = Validate.check(rule,data,true); console.log(result); //output: /*{ email:"电子邮箱格式不正确" idcard:"身份证号码格式不正确" like:"喜欢的数字只能取0,1,2,3,4,5,6" name:"姓名只能是中文" password2:"确认密码不一致" qq:"QQ号码不能为空" }*/ /** * 验证单个错误 */ result = Validate.check('@昵称|chinese','nullfeng'); console.log(result); // output: 昵称只能是中文 ``` ### 增加自定义规则(支持正则和函数) ``` //增加一个只能是指定值的规则 Validate.rule('diy_rule',function(v,m){ //this.data 获取要验证的数据 如 this.field['username'] //this.test 执行已有的验证规则 如 this.test.eq('2',2); return v==m; },'$0 只能是$1'); //使用 var test = '23'; var result = Validate.check(test,'@测试变量|diy_rule:24'); console.log(result); //输出:测试变量 只能是24 //增加一个只能是5开头的规则 Validate.add('diy_rule',/^5\w+/,'$0 只能是5开头哦'); //使用 var test = 'abcd'; var result = Validate.check(test,'@测试变量|diy_rule'); console.log(result); //输出:测试变量 只能是5开头哦 ``` ### check()返回值 验证通过返回真true,失败直接返回错误消息 ``` var result = Validate.check(...); if(result!==true){ //验证不通过 alert(result); } ``` ### 更新日志 20180621 * 优化核心代码(仅49行) * 修复confirm消息提示错误 * 优化@字段名可以放在任意位置 ### 后期目标 * 支持异步(远程)验证 * 增加对表单的自动验证支持 * 具体实现看心情 :)