Чи існує хороша система перевірки для node.js, яка перевіряє змінну для:
- якщо це тип рядка, дати, числа тощо
- максимальна та мінімальна довжина
- електронна пошта, телефон
- тощо ...
Чи існує хороша система перевірки для node.js, яка перевіряє змінну для:
Відповіді:
Нещодавно я виявив перевірку вузлів від chriso .
Приклад
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>'
Я хотів рубін на рейках та перевірку стилю cakephp. Я знав, що це те, що я буду використовувати знову і знову, тому я зробив цей швидкий модуль npm: https://npmjs.org/package/iz
Він читається семантично, як жасмин, і може використовуватися на стороні клієнта або сервера. Це означає, що він постачається з підтримкою commonjs та amd разом із правилами перевірки, переданими через JSON.
Він досить добре перевірений модулем, у нього немає виробничих залежностей, а область застосування заблокована до просто перевірки. Здається, зараз у нас працює невелика громада. Вітаються ідеї, відгуки та запити.
Поточні функції бібліотеки:
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 - це бібліотека методів перевірки, фільтрації та санітарії рядків.
Так що якщо ви хочете мати кращу підтримку для чисел і масивів, ви можете спробувати 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
}
if (the("string").I.want.to.validate.is.shorter.than(123) === false) { console.log('The string is too long'); }
Я переконаний, що це те, що призначено модулю схеми . Зверніть увагу, що він позначений як "у розробці" (позначений як v0.1a). Я не пробував сам, але це виглядає досить добре з прикладів, показаних у README.
Не на рівні змінної, а на рівні аргументу функції:
http://github.com/torvalamo/argtype.js
На даний момент дату потрібно передавати як тип "об'єкт". Це, безумовно, те, про що я забув і внесу до списку завдань. ;)
Конкретна максимальна та мінімальна довжина не підтримується, і, ймовірно, не буде реалізована (але хто знає). Електронну пошту, телефон та все те, що можна перевірити регулярним виразом. Див. Приклад на сторінці github, що включає (простий) приклад регулярного виразу.
Я рекомендую перевірити відсутність документації, однак зрозуміти, дивлячись на приклади, досить просто .
Особливості Valida:
Я закінчую писати бібліотеку щодо перевірки Javascript (як вузла, так і браузера), буду писати документи протягом наступних кількох днів, але код майже готовий: https://github.com/wilkerlucio/composed-validations
Будь ласка, повідомте мене, якщо у вас є якісь запитання / пропозиції щодо цього :)