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

validatorjs

ビルドステータス

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}-検証するデータ

ルール{オブジェクト}-検証ルール

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つあります。1つ目は、データを反映する対応するネストされたオブジェクト構造を使用して検証ルールを宣言する方法です。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:date

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

アルファ

検証中のフィールドは完全に英字でなければなりません。

alpha_dash

検証中のフィールドには、英数字、ダッシュ、アンダースコアが含まれる場合があります。

alpha_num

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

配列

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

before:date

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

before_or_equal:date

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

間:最小、最大

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

ブール値

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

確認済み

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

日にち

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

数字:値

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

異なる:属性

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

Eメール

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

16進数

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

in:foo、bar、..。

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

整数

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

max:value

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

注:最大チェックは包括的です。

min:value

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

注:最小チェックは包括的です。

not_in:foo、bar、..。

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

数値

属性が数値であることを検証します。数値の文字列表現が渡されます。

必要

値の文字列表現の長さが>であるかどうかを確認します

required_if:anotherfield、value

検証中のフィールドは存在している必要があり、anotherfieldフィールドが任意の値に等しい場合は空であってはなりません。

required_unless:anotherfield、value

検証中のフィールドは存在している必要があり、anotherfieldフィールドが任意の値と等しくない限り空であってはなりません。

required_with:foo、bar、..。

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

required_with_all:foo、bar、..。

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

required_without:foo、bar、..。

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

required_without_all:foo、bar、..。

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

同じ:属性

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

サイズ:値

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

ストリング

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

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内の属性は属性名に置き換えられます。

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プロパティを使用して、言語でグローバルカスタム属性名を指定することもできます。

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

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