素晴らしいコミュニティモジュール

バリデータ

ビルドステータス

validatorjs ライブラリは、ブラウザと Node.js の両方で JavaScript のデータ検証を非常に簡単にします。このライブラリは、Laravel フレームワークの Validatorに触発されました

なぜvalidatorjsを使用するのですか?

  • どのライブラリにも依存しません。
  • ブラウザとノードの両方で動作します。
  • 読みやすく宣言的な検証ルール。
  • 多言語対応のエラー メッセージ。
  • AMD/Require.js および CommonJS/Browserify のサポート。

インストール

Bower、NPM、または Github の /dist ディレクトリからvalidatorjsを取得します。

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} - 検証したいデータ

rules {Object} - 検証ルール

customErrorMessages {Object} - 返されるオプションのカスタム エラー メッセージ

例 1 - 検証に合格

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

データオブジェクトに検証ルールを適用するには、ルールオブジェクトに同じオブジェクト キー名を使用します。

例 2 - 検証の失敗

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

ネストされたオブジェクトも検証できます。ネストされたオブジェクトの検証ルールを宣言するには、2 つの方法があります。最初の方法は、データを反映するネストされたオブジェクト構造に対応する検証ルールを宣言することです。2 番目の方法は、フラット化されたキーを使用して検証ルールを宣言することです。たとえば、次のデータを検証するには:

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

次のように検証ルールを宣言できます。

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

ワイルドカードも検証できます。

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' } } }] };

次のように検証ルールを宣言できます。

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

検証ルールには暗黙の「必須」はありません。フィールドが未定義または空の文字列の場合、検証に合格します。未定義または「」の検証に失敗する場合は、必須ルールを使用してください

受け入れた

検証中のフィールドは、yes、on、1、または true である必要があります。これは、「サービス条件」の受け入れを検証するのに役立ちます。

後:日付

検証中のフィールドは、指定された日付より後である必要があります。

after_or_equal:日付

検証前のフィールドは、指定されたフィールド以降である必要があります

アルファ

検証中のフィールドは、完全にアルファベット文字である必要があります。

alpha_dash

検証中のフィールドには、ダッシュとアンダースコアだけでなく、英数字も使用できます。

alpha_num

検証中のフィールドは、完全に英数字である必要があります。

アレイ

検証中のフィールドは配列である必要があります。

前:日付

検証中のフィールドは、指定された日付より前である必要があります。

before_or_equal:日付

検証中のフィールドは、指定された日付以前である必要があります。

間:最小、最大

検証中のフィールドのサイズは、指定された最小値と最大値の間でなければなりません。文字列、数値、およびファイルは、サイズ ルールと同じ方法で評価されます。

ブール値

下は、ブール値のフィールド検証の形でなければなりませんtruefalse01'true''false''0''1'

確認済み

検証中のフィールドには、foo_confirmation の一致するフィールドが必要です。たとえば、検証中のフィールドがパスワードの場合、一致する password_confirmation フィールドが入力に存在する必要があります。

日付

検証中のフィールドは、Javascript のDateオブジェクトで受け入れられる有効な日付形式である必要があります。

数字:値

検証中のフィールドは数値である必要があり、正確な長さの値を持つ必要があります。

異なる:属性

指定されたフィールドは、検証中のフィールドとは異なる必要があります。

Eメール

検証中のフィールドは、電子メール アドレスとしてフォーマットする必要があります。

六角

検証中のフィールドは 16 進数形式である必要があります。16 進hex|size:6数のカラー コード検証など他のルールと組み合わせて使用​​すると便利です。

in:foo、バー、...

検証中のフィールドは、指定された値のリストに含まれている必要があります。フィールドには、配列または文字列を指定できます。

整数

検証中のフィールドには整数値が必要です。

最大:値

属性が指定されたサイズ以下であることを検証する

注: 最大チェック数は含まれています。

分:値

属性が少なくとも指定されたサイズであることを検証します。

注: 最小チェックは含まれています。

not_in:foo、バー、...

検証中のフィールドは、指定された値のリストに含まれていてはなりません。

数値

属性が数値であることを検証します。数値の文字列表現は通過します。

必須

値の文字列表現の長さが >

required_if:別のフィールド、値

anotherfield フィールドがいずれかの値と等しい場合、検証中のフィールドが存在し、空でない必要があります。

required_unless:別のフィールド、値

anotherfield フィールドがいずれかの値と等しくない限り、検証中のフィールドが存在し、空でない必要があります。

required_with:foo、bar、...

他の指定されたフィールドが存在する場合にのみ、検証中のフィールドが存在し、空でない必要があります。

required_with_all:foo,bar,...

他の指定されたフィールドがすべて存在する場合にのみ、検証中のフィールドが存在し、空でない必要があります。

required_without:foo,bar,...

他の指定されたフィールドが存在しない場合にのみ、検証中のフィールドが存在し、空でない必要があります。

required_without_all: foo、bar、...

他の指定されたフィールドがすべて存在しない場合にのみ、検証中のフィールドが存在し、空でない必要があります。

同じ:属性

指定されたフィールドは、検証中のフィールドと一致する必要があります。

サイズ:値

検証中のフィールドのサイズは、指定された値と一致する必要があります。文字列データの場合、値は文字数に対応します。数値データの場合、値は指定された整数値に対応します。

ストリング

検証中のフィールドは文字列である必要があります。

URL

属性に有効な URL 形式があることを検証する

正規表現:パターン

検証中のフィールドは、指定された正規表現に一致する必要があります。

:regexパターンを使用する場合、特に正規表現にパイプ文字が含まれている場合、パイプ区切り文字を使用する代わりに配列でルールを指定する必要がある場合があります.正規表現パターンで使用したバックスラッシュごとに、それぞれをエスケープする必要があります別のバックスラッシュで。

例 3 - 正規表現の検証

1 2 3 4 5 6 7 8 9 10 11 12 13
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

例 4-タイプ チェックの検証

1 2 3 4 5 6 7 8 9 10 11
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);

name {String} - ルールの名前。

callbackFn {Function} - 検証の成功または失敗を表すブール値を返します

errorMessage {String} - カスタム エラー メッセージを指定できるオプションの文字列。errorMessage内の:attributeは属性名に置き換えられます。

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

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 });

その後にコールバックを渡し、あなたのバリデータを呼び出すfailsか、passesそうのように:

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'); });

注:コールバックを使用するpassesfails、コールバックなしでバリデーターを呼び出そうとした場合、非同期検証ルールがある場合、例外がスローされます。

Error Messages

このコンストラクターは、失敗した検証ルールのエラー メッセージを自動的に生成します。

エラーがある場合は、バリデータのインスタンスは、その必要がありますエラーのすべての失敗属性のエラーメッセージが移入プロパティオブジェクトを上のメソッドとプロパティ。エラーのプロパティオブジェクトは、次のとおりです。

.first(属性)

属性の最初のエラー メッセージを返し、それ以外の場合は false を返します。

.get(属性)

属性のエラー メッセージの配列、またはエラーがない場合は空の配列を返します

。すべて()

失敗したすべての属性のすべてのエラー メッセージを含むオブジェクトを返します

.has(属性)

属性にエラー メッセージが存在する場合は true を返し、そうでない場合は false を返します。

.errorCount

検証エラーの数

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

特定のエラーメッセージが必要で、デフォルトをオーバーライドしたくない場合は、Laravelと同じように、オーバーライドを 3 番目の引数として Validator オブジェクトに渡すことができます

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'

一部のバリデーターには、文字列と数値のバージョンがありますが、それらを変更することもできます。

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.'

属性ごとにエラー メッセージを提供することもできます! メッセージのキーを「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

エラー メッセージにカスタムの「わかりやすい」属性名を表示するには、次を使用します。 .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." }

または、attributesプロパティを使用して lang でグローバルなカスタム属性名を指定できます。

カスタム属性フォーマッタを構成することもできます。

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. }

注: デフォルトでは、すべての _ 文字がスペースに置き換えられます。

Language Support

エラー メッセージはデフォルトで英語です。ブラウザに別の言語を含めるには、スクリプト タグで言語ファイルを参照し、 を呼び出します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>

Node では、言語ソース ファイルを自動的にピックアップします。

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

お使いの言語のサポートが表示されない場合は、 に追加してくださいsrc/lang

を呼び出して、独自のカスタム言語を追加することもできますsetMessages

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

指定された言語のメッセージの生のオブジェクトを取得します。

1
Validator.getMessages('lang_code');

バリデーターが使用するデフォルトの言語を切り替えます:

1
Validator.useLang('lang_code');

使用されているデフォルトの言語を取得します。

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

言語のデフォルト メッセージを上書きする:

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