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...
Gibt es ein gutes Validierungsframework für node.js, das eine Variable validiert für:
Antworten:
Ich habe kürzlich Node-Validator von Chriso entdeckt .
Beispiel
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(/^[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>'
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
Node-Validator ist eine Bibliothek mit Methoden zur Validierung, Filterung und Bereinigung von Zeichenfolgen.
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
}
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.
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.
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 :)