JavaScript 對象驗證庫:js-validator

jopen 9年前發布 | 23K 次閱讀 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之間。
email 驗證域必須為電子郵件地址格式。
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支持測試

項目主頁:http://www.baiduhome.net/lib/view/home/1437054547584

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!