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

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進カラーコード検証用のhex hex|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:pattern

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

regexパターンを使用する場合、特に通常の式にパイプ文字が含まれている場合は、パイプ区切り文字を使用する代わりに、配列でルールを指定する必要がある場合があります。regexパターンで使用した後方スラッシュごとに、それぞれをエスケープする必要があります。別の後方スラッシュと1つ。

例3-Regex検証

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 fails

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

注:コールバックなしでpassesまたはfailsを呼び出そうとしたときに、検証者が非同期検証ルールがあることを検出すると、例外がスローされます。

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() 」属性名を表示するには、 .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);