Gibt es ein gutes Validierungsframework für node.js, das eine Variable validiert für:
- Wenn es sich um eine Art Zeichenfolge, Datum, Nummer usw. handelt
- maximale und minimale Länge
- E-Mail, Telefon
- etc...
javascript
validation
node.js
Ajsie
quelle
quelle
Antworten:
Ich habe kürzlich Node-Validator von Chriso entdeckt .
Beispiel
var check = require('validator').check, sanitize = require('validator').sanitize //Validate check('[email protected]').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(/^[a-z]+$/); //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>'
quelle
Ich wollte Rubin auf Schienen und Validierungen im Cakephp-Stil. Ich wusste, dass es etwas war, das ich immer und immer wieder verwenden würde, also machte ich dieses schnelle npm-Modul: https://npmjs.org/package/iz
Es liest sich semantisch wie Jasmin und kann clientseitig oder serverseitig verwendet werden. Dies bedeutet, dass es Unterstützung für commonjs und amd sowie Validierungsregeln bietet, die über JSON übergeben werden.
Es ist ziemlich gut Unit-getestet, es hat keine Produktionsabhängigkeiten und der Bereich ist nur auf die Validierung beschränkt. Wir scheinen jetzt eine kleine Gemeinschaft zu haben. Ideen, Feedback und Pull-Anfragen sind willkommen.
Aktuelle Bibliotheksfunktionen:
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
quelle
Wenn Sie also eine bessere Unterstützung für Numbers and Arrays wünschen , können Sie Chai.js ausprobieren . Hier einige Beispiele:
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 }
quelle
if (the("string").I.want.to.validate.is.shorter.than(123) === false) { console.log('The string is too long'); }
Ich verstehe , dass das Schemamodul so etwas tun soll. Beachten Sie, dass es als "in Entwicklung" gekennzeichnet ist (gekennzeichnet als v0.1a). Ich habe es selbst nicht ausprobiert, aber es sieht aus den Beispielen in der README-Datei ziemlich gut aus.
quelle
Nicht auf variabler Ebene, sondern auf Funktionsargumentebene:
http://github.com/torvalamo/argtype.js
Das Datum muss derzeit als Typ 'Objekt' übergeben werden. Es ist definitiv etwas, das ich vergessen habe und auf die ToDo-Liste setzen werde. ;)
Bestimmte maximale und minimale Länge wird nicht unterstützt und wird wahrscheinlich nicht implementiert (aber wer weiß). E-Mail, Telefon und alles, was per Regex überprüft werden kann. Siehe das Beispiel auf der Github-Seite, das ein (einfaches) Regex-Beispiel enthält.
quelle
Ich empfehle Valida, es fehlt an Dokumentation, aber es ist ziemlich einfach zu verstehen, wenn man sich die Beispiele ansieht .
Valida-Funktionen sind:
quelle
Ich bin mit dem Schreiben einer Bibliothek über Javascript-Validierungen fertig (sowohl Knoten als auch Browser). Ich werde die Dokumente in den nächsten Tagen schreiben, aber der Code ist fast fertig: https://github.com/wilkerlucio/composed-validations
Bitte lassen Sie mich wissen, wenn Sie Fragen / Anregungen dazu haben :)
quelle