js-validatorJavaScript 對象驗證庫
js-validator 是 Laravel 風(fēng)格的 JavaScript 對象驗證庫。
使用 js-validator 來驗證對象或者 JSON 是否符合規(guī)則非常方便,而且具有很好的可擴展性。
舉個例子
var example = {
text: 'Hello world!',
date: '2015-07-07',
comments: null,
},
rules = {
text: 'required|string',
date: 'date|date_format:yyyy-MM-dd',
comments: 'integer',
};
console.log(Validator.validate(example, rules));
// => Object {status: "failed", field: "comments", rule: "integer"}
基本用法
引入validator.js(原生JavaScript)
<script type="text/javascript" src="./src/validator.js"> </script>
或
<script type="text/javascript" src="./dist/validator.min.js"> </script>
初始化(非原生JavaScript)
Node.js
npm install ppoffice/js-validator --save
var validator = require('js-validator');
RequireJS
requirejs(["../src/validator"], function(validator) {
...
});
Sea.js
define(function (require, exports, module) {
var validator = require('./validator');
...
});
制定驗證規(guī)則
對于同一個對象屬性,你可以并列制定幾個不同的規(guī)則進行限定,使用|作為不同規(guī)則間的分割符。
var rules = {
text: 'required|string',
date: 'date|date_format:yyyy-MM-dd',
comments: 'integer',
};
驗證
validator.validate(object_to_be_tested, rules);
如果待驗證對象符合規(guī)則,validate函數(shù)返回true;否則返回帶有驗證狀態(tài)、失敗的屬性和對應(yīng)失敗的規(guī)則信息的對象。
添加驗證器
使用add方法為Validator添加驗證器,第一個參數(shù)為驗證器名稱,第二個參數(shù)為驗證方法,可以為正則表達式對象或者函數(shù)。當(dāng)驗證方法為函數(shù)時,其第一個參數(shù)必須為當(dāng)前驗證域的值,后面的參數(shù)根據(jù)需求而定,驗證成功時結(jié)果返回true。
validator.add('older_than', function (value, age) {
return value > age;
});var rules = {
age: 'integer|older_than:17',
};
可用的驗證規(guī)則
| 驗證規(guī)則 | 規(guī)則含義 |
|---|---|
| accepted | 驗證域必須為yes、on、1、或者true。 這個規(guī)則常用語驗證“同意使用條款”表單。 |
| after:date | 驗證的日期域的日期必須在指定日期之后。 |
| alpha | 驗證域必須由純英文字符組成。 |
| alpha_dash | 驗證域必須由英文字符、數(shù)字、中劃線或者下劃線組成。 |
| alpha_num | 驗證域必須由英文字符或者數(shù)字組成。 |
| array | 驗證域必須為數(shù)組對象。 |
| before:date | 驗證的日期域的日期必須在給定日期之前。 |
| between:min,max | 驗證域的值必須在min和max之間,驗證域可以是數(shù)字或者字符串。 |
| boolean | 驗證域的值可以看作是布爾值,可以是true,false,1,0,"1","0",'1' and '0'。 |
| date | 驗證域必須為日期字符串形式,可以被Date.parse方法解析。 |
| date_format:format | 驗證域必須符合制定的日期格式,允許的日期格式參照源代碼中的dateFormat方法。 |
| different:field | 驗證域的值必須域指定域的值不同。 |
| digits:value | 驗證域必須為數(shù)字,且其位數(shù)為給定的位數(shù)。 |
| digits_between:min,max | 驗證域必須為數(shù)字,且其位數(shù)在min和max之間。 |
| 驗證域必須為電子郵件地址格式。 | |
| in:foo,bar,... | 驗證域的值必須在給定的允許值列表中。 |
| integer | 驗證值必須為整數(shù)。 |
| ip | 驗證值必須為IP地址形式(支持IPv4與IPv6)。 |
| max:value | 驗證域的值必須小于等于max,驗證域可以是數(shù)字或者字符串。 |
| mimes:foo,bar,... | 驗證值的擴展名必須在給定的擴展名列表中。 |
| min:value | 驗證域的值必須大于等于min,驗證域可以是數(shù)字或者字符串。 |
| not_in:foo,bar,... | 驗證域的值必須不在給定的值列表中。 |
| numeric | 驗證域必須為數(shù)字。 |
| regex | 驗證域必須符合指定的正則表達式(JavaScript風(fēng)格)。 |
| required | 驗證域必須存在。 |
| required_if:field,value,... | 如果給定的域的值等于給定的值,驗證域必須存在。這里的條件可以是多個域和值,它們之間的關(guān)系為“與”。 |
| required_with:foo,bar,... | 如果給定的域之中任何一個存在的話,驗證域必須存在。 |
| required_with_all:foo,bar,... | 僅當(dāng)所有給定的域存在時,驗證域必須存在。 |
| required_without:foo,bar,... | 如果給定的域之中任何一個不存在的話,驗證域必須存在。 |
| required_without_all:foo,bar,... | 僅當(dāng)所有給定的所有域都不存在時,驗證域必須存在。 |
| same | 驗證域的值必須域指定域的值相同。 |
| size:value | 驗證域的大小必須等于指定大小。對于字符串來說,驗證域的字符串長度必須等于給定長度。對于數(shù)字來說,驗證域的值必須等于給定值。 |
| string | 驗證域必須為字符串。 |
| url | 驗證域必須為URL地址。當(dāng)前不支持含有非英文(中文等)字符的地址。 |
測試文件入口
./test/index.html 原生JavaScript支持測試
./test/node.js Node.js支持測試
./test/requirejs.html RequireJS支持測試
./test/seajs.html Sea.js支持測試
評論
圖片
表情
