JavaScript 對象驗證庫:js-validator
js-validator 是 Laravel 風格的 JavaScript 對象驗證庫。
使用 js-validator 來驗證對象或者 JSON 是否符合規則非常方便,而且具有很好的可擴展性。
舉個例子
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'); ... });
制定驗證規則
對于同一個對象屬性,你可以并列制定幾個不同的規則進行限定,使用|作為不同規則間的分割符。
var rules = { text: 'required|string', date: 'date|date_format:yyyy-MM-dd', comments: 'integer', };
驗證
validator.validate(object_to_be_tested, rules);
如果待驗證對象符合規則,validate函數返回true;否則返回帶有驗證狀態、失敗的屬性和對應失敗的規則信息的對象。
添加驗證器
使用add方法為Validator添加驗證器,第一個參數為驗證器名稱,第二個參數為驗證方法,可以為正則表達式對象或者函數。當驗證方法為函數時,其第一個參數必須為當前驗證域的值,后面的參數根據需求而定,驗證成功時結果返回true。
validator.add('older_than', function (value, age) { return value > age; });var rules = { age: 'integer|older_than:17', };
可用的驗證規則
驗證規則 | 規則含義 |
---|---|
accepted | 驗證域必須為yes、on、1、或者true。 這個規則常用語驗證“同意使用條款”表單。 |
after:date | 驗證的日期域的日期必須在指定日期之后。 |
alpha | 驗證域必須由純英文字符組成。 |
alpha_dash | 驗證域必須由英文字符、數字、中劃線或者下劃線組成。 |
alpha_num | 驗證域必須由英文字符或者數字組成。 |
array | 驗證域必須為數組對象。 |
before:date | 驗證的日期域的日期必須在給定日期之前。 |
between:min,max | 驗證域的值必須在min和max之間,驗證域可以是數字或者字符串。 |
boolean | 驗證域的值可以看作是布爾值,可以是true,false,1,0,"1","0",'1' and '0'。 |
date | 驗證域必須為日期字符串形式,可以被Date.parse方法解析。 |
date_format:format | 驗證域必須符合制定的日期格式,允許的日期格式參照源代碼中的dateFormat方法。 |
different:field | 驗證域的值必須域指定域的值不同。 |
digits:value | 驗證域必須為數字,且其位數為給定的位數。 |
digits_between:min,max | 驗證域必須為數字,且其位數在min和max之間。 |
驗證域必須為電子郵件地址格式。 | |
in:foo,bar,... | 驗證域的值必須在給定的允許值列表中。 |
integer | 驗證值必須為整數。 |
ip | 驗證值必須為IP地址形式(支持IPv4與IPv6)。 |
max:value | 驗證域的值必須小于等于max,驗證域可以是數字或者字符串。 |
mimes:foo,bar,... | 驗證值的擴展名必須在給定的擴展名列表中。 |
min:value | 驗證域的值必須大于等于min,驗證域可以是數字或者字符串。 |
not_in:foo,bar,... | 驗證域的值必須不在給定的值列表中。 |
numeric | 驗證域必須為數字。 |
regex | 驗證域必須符合指定的正則表達式(JavaScript風格)。 |
required | 驗證域必須存在。 |
required_if:field,value,... | 如果給定的域的值等于給定的值,驗證域必須存在。這里的條件可以是多個域和值,它們之間的關系為“與”。 |
required_with:foo,bar,... | 如果給定的域之中任何一個存在的話,驗證域必須存在。 |
required_with_all:foo,bar,... | 僅當所有給定的域存在時,驗證域必須存在。 |
required_without:foo,bar,... | 如果給定的域之中任何一個不存在的話,驗證域必須存在。 |
required_without_all:foo,bar,... | 僅當所有給定的所有域都不存在時,驗證域必須存在。 |
same | 驗證域的值必須域指定域的值相同。 |
size:value | 驗證域的大小必須等于指定大小。對于字符串來說,驗證域的字符串長度必須等于給定長度。對于數字來說,驗證域的值必須等于給定值。 |
string | 驗證域必須為字符串。 |
url | 驗證域必須為URL地址。當前不支持含有非英文(中文等)字符的地址。 |
測試文件入口
./test/index.html 原生JavaScript支持測試
./test/node.js Node.js支持測試
./test/requirejs.htmlRequireJS支持測試
./test/seajs.htmlSea.js支持測試
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!