Geweldige gemeenschapsmodule

validatorjs

Bouwstatus

De validatorjs-bibliotheek maakt gegevensvalidatie in JavaScript zeer eenvoudig in zowel de browser als Node.js. Deze bibliotheek is geïnspireerd op de Validator van het Laravel-framework .

Waarom validatorjs gebruiken?

  • Niet afhankelijk van bibliotheken.
  • Werkt zowel in de browser als in Node.
  • Leesbare en declaratieve validatieregels.
  • Foutmeldingen met meertalige ondersteuning.
  • Ondersteuning voor AMD/Require.js en CommonJS/Browserify.

Installatie

Pak validatorjs van Bower, NPM of de map /dist op Github:

1
bower install validatorjs
1
npm install validatorjs

Browser

1
<script src="validator.js"></script>

Node.js / Browserify

1
let Validator = require('validatorjs');

Basic Usage

1
let validation = new Validator(data, rules [, customErrorMessages]);

data {Object} - De gegevens die u wilt valideren

regels {Object} - Validatieregels

customErrorMessages {Object} - Optionele aangepaste foutberichten om te retourneren

Voorbeeld 1 - Validatie passeren

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
let data = { name: 'John', email: 'johndoe@gmail.com', age: 28 }; let rules = { name: 'required', email: 'required|email', age: 'min:18' }; let validation = new Validator(data, rules); validation.passes(); // true validation.fails(); // false

Als u validatieregels op het gegevensobject wilt toepassen , gebruikt u dezelfde objectsleutelnamen voor het regelobject .

Voorbeeld 2 - Mislukte validatie

1 2 3 4 5 6 7 8 9 10 11 12 13 14
let validation = new Validator({ name: 'D', email: 'not an email address.com' }, { name: 'size:3', email: 'required|email' }); validation.fails(); // true validation.passes(); // false // Error messages validation.errors.first('email'); // 'The email format is invalid.' validation.errors.get('email'); // returns an array of all email error messages

Nested Rules

Geneste objecten kunnen ook worden gevalideerd. Er zijn twee manieren om validatieregels voor geneste objecten te declareren. De eerste manier is om de validatieregels te declareren met een overeenkomstige geneste objectstructuur die de gegevens weerspiegelt. De tweede manier is om validatieregels te declareren met een afgevlakte sleutel namen, bijvoorbeeld om de volgende gegevens te valideren:

1 2 3 4 5 6 7 8 9 10
let data = { name: 'John', bio: { age: 28, education: { primary: 'Elementary School', secondary: 'Secondary School' } } };

We kunnen onze validatieregels als volgt declareren:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
let nested = { name: 'required', bio: { age: 'min:18', education: { primary: 'string', secondary: 'string' } } }; // OR let flattened = { 'name': 'required', 'bio.age': 'min:18' 'bio.education.primary': 'string', 'bio.education.secondary': 'string' };

WildCards Rules

WildCards kunnen ook worden gevalideerd.

1 2 3 4 5 6 7 8 9 10 11 12
let data = { users: [{ name: 'John', bio: { age: 28, education: { primary: 'Elementary School', secondary: 'Secondary School' } } }] };

We kunnen onze validatieregels als volgt declareren:

1 2 3 4 5 6
let rules = { 'users.*.name': 'required', 'users.*.bio.age': 'min:18' 'users.*.bio.education.primary': 'string', 'users.*.bio.education.secondary': 'string' };

Available Rules

Validatieregels hebben geen impliciet 'vereist'. Als een veld ongedefinieerd is of een lege tekenreeks is, zal het de validatie doorstaan. Als u wilt dat een validatie mislukt voor ongedefinieerd of '', gebruik dan de vereiste regel.

geaccepteerd

Het veld onder validatie moet ja, aan, 1 of waar zijn. Dit is handig voor het valideren van de acceptatie van de "Servicevoorwaarden".

na: datum

Het te valideren veld moet na de opgegeven datum liggen.

after_or_equal:datum

Het veld dat niet wordt gevalideerd, moet na of gelijk zijn aan het opgegeven veld

alfa

Het te valideren veld moet volledig uit alfabetische tekens bestaan.

alpha_streepje

Het te valideren veld kan alfanumerieke tekens bevatten, maar ook streepjes en onderstrepingstekens.

alfa_num

Het te valideren veld moet volledig uit alfanumerieke tekens bestaan.

reeks

Het te valideren veld moet een array zijn.

vóór: datum

Het te valideren veld moet vóór de opgegeven datum liggen.

before_or_equal:datum

Het te valideren veld moet vóór of gelijk zijn aan de opgegeven datum.

tussen:min,max

Het te valideren veld moet een grootte hebben tussen de opgegeven min. en max. Tekenreeksen, numerieke waarden en bestanden worden op dezelfde manier geëvalueerd als de grootteregel.

Booleaans

Het te valideren veld moet een Booleaanse waarde zijn in de vorm true, false, 0, 1, 'true', 'false', '0','1'

bevestigd

Het veld dat wordt gevalideerd moet een overeenkomend veld foo_confirmation hebben. Als het veld dat wordt gevalideerd bijvoorbeeld wachtwoord is, moet er een overeenkomend veld wachtwoord_confirmation aanwezig zijn in de invoer.

datum

Het te valideren veld moet een geldig datumformaat hebben dat acceptabel is voor het Javascript- Dateobject.

cijfers: waarde

Het te valideren veld moet numeriek zijn en een exacte waardelengte hebben.

anders: attribuut

Het opgegeven veld moet anders zijn dan het veld dat wordt gevalideerd.

e-mail

Het veld onder validatie moet zijn opgemaakt als een e-mailadres.

hex

Het te valideren veld moet een hexadecimaal formaat hebben. Handig in combinatie met andere regels, zoals hex|size:6voor validatie van hex-kleurcodes.

in:foe,bar,...

Het te valideren veld moet worden opgenomen in de opgegeven lijst met waarden. Het veld kan een array of een string zijn.

geheel getal

Het te valideren veld moet een geheel getal bevatten.

maximum waarde

Valideer dat een attribuut niet groter is dan een bepaalde grootte

Let op: Maximale controles zijn inclusief.

min:waarde

Valideer dat een attribuut ten minste een bepaalde grootte heeft.

Let op: Minimale controles zijn inclusief.

not_in:foo,bar,...

Het te valideren veld mag niet worden opgenomen in de opgegeven lijst met waarden.

numeriek

Valideer dat een attribuut numeriek is. De tekenreeksrepresentatie van een getal wordt doorgegeven.

vereist

Controleert of de lengte van de String-weergave van de waarde > is

vereist_if:een anderveld,waarde

Het te valideren veld moet aanwezig zijn en mag niet leeg zijn als het veld anotherfield gelijk is aan een willekeurige waarde.

vereist_unless:een anderveld,waarde

Het te valideren veld moet aanwezig zijn en mag niet leeg zijn, tenzij het veld anotherfield gelijk is aan een willekeurige waarde.

vereist_met:foo,bar,...

Het te valideren veld moet aanwezig zijn en mag alleen leeg zijn als een van de andere gespecificeerde velden aanwezig is.

vereist_met_alles:foo,bar,...

Het te valideren veld moet alleen aanwezig zijn en mag niet leeg zijn als alle andere gespecificeerde velden aanwezig zijn.

vereist_zonder:foo,bar,...

Het te valideren veld moet alleen aanwezig zijn en mag niet leeg zijn als een van de andere opgegeven velden niet aanwezig is.

vereist_zonder_alles:foo,bar,...

Het te valideren veld moet alleen aanwezig zijn en mag niet leeg zijn als alle andere opgegeven velden niet aanwezig zijn.

hetzelfde: attribuut

Het opgegeven veld moet overeenkomen met het veld dat wordt gevalideerd.

maat:waarde

Het te valideren veld moet een grootte hebben die overeenkomt met de opgegeven waarde. Voor tekenreeksgegevens komt de waarde overeen met het aantal tekens. Voor numerieke gegevens komt de waarde overeen met een opgegeven geheel getal.

snaar

Het te valideren veld moet een string zijn.

URL

Valideer dat een attribuut een geldige URL-indeling heeft

regex: patroon

Het te valideren veld moet overeenkomen met de opgegeven reguliere expressie.

Opmerking : wanneer u het regexpatroon gebruikt, kan het nodig zijn om regels in een array op te geven in plaats van pipe-scheidingstekens te gebruiken, vooral als de reguliere expressie een pipe-teken bevat. Voor elke achterwaartse slash die u in uw regex-patroon hebt gebruikt, moet u aan elke slash een escape-teken uitvoeren. met nog een achterwaartse slag.

Voorbeeld 3 - Regex-validatie

1 2 3 4 5 6 7 8 9 10 11 12
let validation = new Validator({ name: 'Doe', salary: '10,000.00', yearOfBirth: '1980' }, { name: 'required|size:3', salary: ['required', 'regex:/^(?!0\\.00)\\d{1,3}(,\\d{3})*(\\.\\d\\d)?$/'], yearOfBirth: ['required', 'regex:/^(19|20)[\\d]{2,2}$/'] }); validation.fails(); // false validation.passes(); // true

Voorbeeld 4 - Typecontrolevalidatie

1 2 3 4 5 6 7 8 9 10
let validation = new Validator({ age: 30, name: '' }, { age: ['required', { 'in': [29, 30] }], name: [{ required_if: ['age', 30] }] }); validation.fails(); // true validation.passes(); // false

Register Custom Validation Rules

1
Validator.register(name, callbackFn, errorMessage);

naam {String} - De naam van de regel.

callbackFn {Functie} - Retourneert een Booleaanse waarde die een succesvolle of mislukte validatie vertegenwoordigt.

errorMessage {String} - Een optionele tekenreeks waarin u een aangepast foutbericht kunt opgeven. :attribuut binnen errorMessage wordt vervangen door de kenmerknaam.

1 2 3
Validator.register('telephone', function(value, requirement, attribute) { // requirement parameter defaults to null return value.match(/^\d{3}-\d{3}-\d{4}$/); }, 'The :attribute phone number is not in the format XXX-XXX-XXXX.');

Asynchronous Validation

Registreer een asynchrone regel die een callback accepteert passes:

1 2 3 4 5 6
Validator.registerAsync('username_available', function(username, attribute, req, passes) { // do your database/api checks here etc // then call the `passes` method where appropriate: passes(); // if username is available passes(false, 'Username has already been taken.'); // if username is not available });

Bel vervolgens uw validator en stuur een terugbelverzoek naar failsof passeszoiets:

1 2 3 4 5 6 7 8 9 10 11 12 13
let validator = new Validator({ username: 'test123' }, { username: 'required|min:3|username_available' }); validator.passes(function() { // Validation passed }); validator.fails(function() { validator.errors.first('username'); });

Opmerking: als u probeert te bellen passesof failszonder terugbellen en de validator detecteert dat er asynchrone validatieregels zijn, wordt er een uitzondering gegenereerd.

Error Messages

Deze constructor genereert automatisch foutmeldingen voor mislukte validatieregels.

Als er fouten zijn, wordt het eigenschapsobject fouten van de Validator-instantie gevuld met de foutmeldingen voor alle falende attributen. De methoden en eigenschappen van het eigenschapsobject fouten zijn:

.eerste(attribuut)

retourneert het eerste foutbericht voor een attribuut, anders false

.get(attribuut)

retourneert een array met foutmeldingen voor een attribuut, of een lege array als er geen fouten zijn

.alle()

retourneert een object dat alle foutmeldingen bevat voor alle falende attributen

.heeft(attribuut)

retourneert true als er foutmeldingen bestaan ​​voor een attribuut, anders false

.errorCount

het aantal validatiefouten

1 2 3
let validation = new Validator(input, rules); validation.errors.first('email'); // returns first error message for email attribute validator.errors.get('email'); // returns an array of error messages for the email attribute

Custom Error Messages

Als u een specifiek foutbericht nodig heeft en u de standaardfoutmelding niet wilt overschrijven, kunt u een overschrijving doorgeven als derde argument aan het Validator-object, net als bij Laravel .

1 2 3 4 5 6 7 8 9 10
let input = { name: '' }; let rules = { name : 'required' }; let validation = new Validator(input, rules, { required: 'You forgot to give a :attribute' }); validation.errors.first('name'); // returns 'You forgot to give a name'

Sommige validators hebben string- en numerieke versies. U kunt deze ook wijzigen.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
let input = { username: 'myusernameistoolong' }; let rules = { username : 'max:16' }; let validation = new Validator(input, rules, { max: { string: 'The :attribute is too long. Max length is :max.' } }); validation.errors.first('username'); // returns 'The username is too long. Max length is 16.'

Je kunt zelfs foutmeldingen per attribuut opgeven! Stel gewoon de sleutel van het bericht in op 'validator.attribute'

1 2 3 4 5 6 7 8 9
let input = { name: '', email: '' }; let rules = { name : 'required', email : 'required' }; let validation = new Validator(input, rules, { "required.email": "Without an :attribute we can't reach you!" }); validation.errors.first('name'); // returns 'The name field is required.' validation.errors.first('email'); // returns 'Without an email we can\'t reach you!'

Custom Attribute Names

Om een ​​aangepaste "vriendelijke" attribuutnaam in foutmeldingen weer te geven, gebruikt u.setAttributeNames()

1 2 3 4 5
let validator = new Validator({ name: '' }, { name: 'required' }); validator.setAttributeNames({ name: 'custom_name' }); if (validator.fails()) { validator.errors.first('name'); // "The custom_name field is required." }

Als alternatief kunt u bij de eigenschap globale aangepaste attribuutnamen in uw taal opgeven attributes.

U kunt ook een aangepaste attribuutformatter configureren:

1 2 3 4 5 6 7 8 9 10 11 12 13
// Configure global formatter. Validator.setAttributeFormatter(function(attribute) { return attribute.replace(/_/g, ' '); }); // Or configure formatter for particular instance. let validator = new Validator({ first_name: '' }, { first_name: 'required' }); validator.setAttributeFormatter(function(attribute) { return attribute.replace(/_/g, ' '); }); if (validator.fails()) { console.log(validator.errors.first('first_name')); // The first name field is required. }

Let op: standaard worden alle _ tekens vervangen door spaties.

Language Support

Foutmeldingen zijn standaard in het Engels. Als u een andere taal in de browser wilt opnemen, verwijst u naar het taalbestand in een scripttag en roept u aan Validator.useLang('lang_code').

1 2 3 4 5
<script src="dist/validator.js"></script> <script src="dist/lang/ru.js"></script> <script> Validator.useLang('es'); </script>

In Node wordt automatisch de taalbronbestanden opgehaald.

1 2
let Validator = require('validatorjs'); Validator.useLang('ru');

Als u geen ondersteuning voor uw taal ziet, voeg er dan een toe aan src/lang!

U kunt ook uw eigen aangepaste taal toevoegen door te bellen naar setMessages:

1 2 3
Validator.setMessages('lang_code', { required: 'The :attribute field is required.' });

Haal het onbewerkte object van berichten op voor de gegeven taal:

1
Validator.getMessages('lang_code');

Wijzig de standaardtaal die door de validator wordt gebruikt:

1
Validator.useLang('lang_code');

De standaardtaal ophalen die wordt gebruikt:

1
Validator.getDefaultLang(); // returns e.g. 'en'

Standaardberichten voor taal overschrijven:

1 2 3
let messages = Validator.getMessages('en'); messages.required = 'Whoops, :attribute field is required.'; Validator.setMessages('en', messages);