validatorjs
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:
1bower install validatorjs
1npm install validatorjs
Browser
1<script src="validator.js"></script>
Node.js / Browserify
1let Validator = require('validatorjs');
Basic Usage
1let 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
16let 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
14let 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
10let 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
19let 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
12let 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
6let 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- Date
object.
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.
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:6
voor 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 regex
patroon 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
12let 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
10let 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
1Validator.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
3Validator.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
6Validator.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 fails
of passes
zoiets:
1
2
3
4
5
6
7
8
9
10
11
12
13let 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 passes
of fails
zonder 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
3let 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
10let 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
15let 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
9let 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
5let 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
2let 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
3Validator.setMessages('lang_code', {
required: 'The :attribute field is required.'
});
Haal het onbewerkte object van berichten op voor de gegeven taal:
1Validator.getMessages('lang_code');
Wijzig de standaardtaal die door de validator wordt gebruikt:
1Validator.useLang('lang_code');
De standaardtaal ophalen die wordt gebruikt:
1Validator.getDefaultLang(); // returns e.g. 'en'
Standaardberichten voor taal overschrijven:
1
2
3let messages = Validator.getMessages('en');
messages.required = 'Whoops, :attribute field is required.';
Validator.setMessages('en', messages);