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('<a>').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级别,而是在函数参数级别:
date目前需要通过types“对象”。 这绝对是我忘记的东西,并会列入待办事项列表。 ;)
特定的最大和最小长度不被支持,并可能不会被执行(但谁知道)。 电子邮件,电话和所有可以通过正则expression式来检查。 请参阅github页面上的示例,其中包含一个(简单的)正则expression式示例。
我推荐valida缺less文档,但是看例子很简单。
Valida的特点是:
- 消毒
- 同步和asynchronousvalidation
- 组
- 扩展
我正在编写一个关于Javascriptvalidation(节点和浏览器)的库,我将在接下来几天编写文档,但代码已经准备就绪: https : //github.com/wilkerlucio/composed-validations
请让我知道,如果你有任何问题/build议:)
- 为什么当从外部来源(如Excel,Word等等)点击链接时Cookie无法识别?
- 使用jQuery 1.9的MVC 4 Project中的jquery.validate.js错误
- Rails – validation协会的存在?
- 使用Javascript函数设置input的值
- 您如何从(非Web)Python客户端访问经过身份validation的Google App Engine服务?
- 在angularjs中显示validation错误消息
- 检查到UITextField的input只是数字
- 处理Mongoosevalidation错误 – 在哪里以及如何?
- 为什么在下面的例子中包含<deny users =“?”/>?