# node-form-validator [![NPM version][npm-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][daviddm-image]][daviddm-url] [![Coverage percentage][coveralls-image]][coveralls-url]
[en](./README.en.md)
[中文](./README.md)
> Validator for javascript types
## Installation
```sh
$ npm install --save node-form-validator
```
## Configurations
### Format
A configuration is an object with fieldNames and attributes describing the corresponding fieldName.
The following is a very simple example for node-form-valiator configuration
```js
var conf = {
fieldName: {
type: 'string'
required: true,
minLength: 1,
maxLength: 100
}
}
```
#### Attributes
There a currently 8 attributes available.
- type string
required for every fields to be validated
- matches string
if this attribute is specified, then there must be an another field to be matched with
- alias string
If this attribute is specified, then the name field must be companied for it will be translated into this alias
- name string
must be specifed when alias or matches enabled
- required boolean
* true: when this field must be specified
* false: default
- minLength integer
minimum length for a string, only valid when type is string or text
- maxLength integer
maximum length for a string, only valid when type is string or text
- locale string
must be locale strings, like zh-CN, zh-HK, en-US, en-GB
- validate object
this means you have children to validate, only with type object
## Supported types
```js
'email'
'url'
'fqdn'
'ip'
'alpha'
'numeric'
'alphanumeric'
'base64'
'hexadecimal'
'hexcolor'
'int'
'float'
'uuid'
'date'
'json'
'creditcard'
'isbn'
'phone'
'ascii'
'multibyte'
'time'
'string', //no more than 256 chars
'text', //no more than 65536 chars,
'object' //have children
```
## Usage
### Define configuration
```js
//Validate
var conf = {
password: {
type: 'string',
minLength: 3,
maxLength: 64,
required: true
},
children: {
type: 'object', //children enabled
validate: {
child1: {
type: 'string'
},
child2: {
type: 'phone'
},
child3: {
type: 'object', //children enabled
validate: {
...
}
}
}
}
};
var dataToBeExtracted = {
password: 'sfdo@sdfosfod',
children: {
child1: 'hell',
child2: '13923213239',
child3: {}
}
};
```
### Validation
```js
var validator = require('node-form-validator');
var error = {};
```
#### Validate http requests
```js
function(req, res) {
//Errors reported
var error = {};
var data = {};
if (validator.v(req, conf, data, error)) {
// Do something for validation passed
} else {
// Do something for validation failed
}
}
```
#### Validate json objects
```js
var json = {}
//Errors reported
var error = {};
if (validator.validate(json, conf, error)) {
// Do something for validation passed
} else {
// Do something for validation failed
}
```
#### Extraction from json
```js
var extractedData = validator.json.extract(json, conf));
```
## License
MIT © [calidion](blog.3gcnbeta.com)
[npm-image]: https://badge.fury.io/js/node-form-validator.svg
[npm-url]: https://npmjs.org/package/node-form-validator
[travis-image]: https://travis-ci.org/JSSDKCN/node-form-validator.svg?branch=master
[travis-url]: https://travis-ci.org/JSSDKCN/node-form-validator
[daviddm-image]: https://david-dm.org/JSSDKCN/node-form-validator.svg?theme=shields.io
[daviddm-url]: https://david-dm.org/JSSDKCN/node-form-validator
[coveralls-image]: https://coveralls.io/repos/JSSDKCN/node-form-validator/badge.svg
[coveralls-url]: https://coveralls.io/r/JSSDKCN/node-form-validator