Node.js的validation库

有没有一个好的validation框架node.jsvalidationvariables为:

  • 如果它的stringtypes,date,数字等
  • 最大和最小长度
  • 电子邮件,电话
  • 等等…

我最近通过chriso发现了节点validation器 。

var check = require('validator').check, sanitize = require('validator').sanitize //Validate check('test@email.com').len(6, 64).isEmail(); //Methods are chainable check('abc').isInt(); //Throws 'Invalid integer' check('abc', 'Please enter a number').isInt(); //Throws 'Please enter a number' check('abcdefghijklmnopzrtsuvqxyz').is(/^[az]+$/); //Sanitize / Filter var int = sanitize('0123').toInt(); //123 var bool = sanitize('true').toBoolean(); //true var str = sanitize(' \s\t\r hello \n').trim(); //'hello' var str = sanitize('aaaaaaaaab').ltrim('a'); //'b' var str = sanitize(large_input_str).xss(); var str = sanitize('&lt;a&gt;').entityDecode(); //'<a>' 

我想在rails和cakephp风格validationruby。 我知道这是我会反复使用,所以我做了这个快速npm模块: https ://npmjs.org/package/iz

它在语义上就像茉莉花一样读取,可以用于客户端或服务器端。 这意味着它支持commonjs和amd以及通过JSON传入的validation规则。

它很好的unit testing,它没有生产依赖,范围被locking,只是validation。 我们现在似乎有一个小社区。 想法,反馈和拉请求都欢迎。

当前库函数:

 iz.alphaNumeric(*); // Is number or string(contains only numbers or strings) iz.between(number, start, end); // Number is start or greater but less than or equal to end, all params numeric iz.blank(*); // Empty string, undefined or null iz.boolean(*); // true, false, 0, 1 iz.cc(*); // Luhn checksum approved value iz.date(*); // Is a data obj or is a string that is easily converted to a date iz.decimal(*); // Contains 1 decimal point and potentially can have a - at the beginning iz.email(*); // Seems like a valid email address iz.extension(ob1, ob2); // If obj2's methods are all found in obj1 iz.fileExtension(arr, value); // Checks if the extension of value is in arr. An obj can be provide, but must have indexOf defined. iz.fileExtensionAudio(value); // Check against mp3, ogg, wav, aac iz.fileExtensionImage(value); // Check against png, jpg, jpeg, gif, bmp, svg, gif iz.inArray(arr, value); // If * is in the array iz.int(*, bool (optional)); // Is an int. If the 2nd variable is true (false by default) a decimal is allowed iz.ip(str); // str resembles an IPV4 or IPV6 address iz.minLen(val, min); // val (str or arr) is greater than min iz.maxLen(val, max); // val (str or arr) is shorter than max iz.multiple(num, mult); // Number is multiple of another number iz.number(*); // Is either an int or decimal iz.ofType(obj, typeName); // If it is a named object, and the name matches the string iz.phone(str, canHaveExtension?); // Is an american phone number. Any punctuations are allowed. iz.postal(*); // Is a postal code or zip code iz.ssn(*); // Is a social security number 

节点validation器是一个stringvalidation,过滤和消毒方法的库。

所以如果你想更好地支持Numbers和Arrays,你可以试试Chai.js。 这里有一些例子:

 var expect = require('chai').expect; try { expect([1, 2, 3]).to.have.length.below(4); expect(5).to.be.within(3,6); expect('test').to.have.length(4); } catch (e) { // should not occur } 

我认为这是模式模块所要做的。 请注意,它被标记为“正在开发中”(标记为v0.1a)。 我自己并没有尝试过,但从自述文件中显示的示例看起来相当不错。

不是在variables级别,而是在函数参数级别:

http://github.com/torvalamo/argtype.js

date目前需要通过types“对象”。 这绝对是我忘记的东西,并会列入待办事项列表。 ;)

特定的最大和最小长度不被支持,并可能不会被执行(但谁知道)。 电子邮件,电话和所有可以通过正则expression式来检查。 请参阅github页面上的示例,其中包含一个(简单的)正则expression式示例。

我推荐valida缺less文档,但是看例子很简单。

Valida的特点是:

  • 消毒
  • 同步和asynchronousvalidation
  • 扩展

我正在编写一个关于Javascriptvalidation(节点和浏览器)的库,我将在接下来几天编写文档,但代码已经准备就绪: https : //github.com/wilkerlucio/composed-validations

请让我知道,如果你有任何问题/build议:)