式ビルダーバリデーションのリファレンス
Liferay 7.4 U27以降とGA27以降で利用可能
カスタムオブジェクトでは、Liferayの式ビルダーを使用してフィールドのバリデーションを作成できます。 このツールには、定義済みのフィールド、演算子、関数を使用して複雑なバリデーションルールを迅速に定義するための統合エディターがあります。 利用可能なエレメントは、条件サイドパネルで閲覧できます。
式ビルダーバリデーションは、テキスト、数値、日付、ブール値の各フィールドタイプでのみ使用可能です。
テキスト項目
Liferayは、テキストおよび長いテキストフィールドに対して以下の演算子および関数を提供します。 これらのフィールドのいずれかを引数として使用できます。 いくつかの要素では、フィールドの値と比較するためのString値を追加することもできます(例: "foo"
、"[A-Za-z]{1,50}"
)。
連結
複数の文字列またはテキストフィールドを結合し、他の検証関数で使用できる単一の文字列を返します。
concat([textField], "[string]")
条件(テキスト付き)
ユーザー入力が一つ以上の条件を満たしているかどうかを調べ、ブール値を返す。 この機能は、 if
文のように動作します。 各式は少なくとも1つの [condition]
(例えば、 [textField] == "foo"
) を含み、 true
または false
を返す。 同じ式に複数の条件を追加し、いずれの条件も満たさなかった場合の戻り値を決定することができる(例: [textField] == "foo", [textField] == "bar", true, false
)。
condition([condition], [return-value])
テキストを含む
テキストフィールドが特定のString値を含んでいるかどうかを確認し、ブール値を返します。フィールドが値を 含まない 場合は、false
を返します。
contains([textField], "[string]")
非含有 (本文あり)
テキストフィールドが特定のString値を含んでいるかどうかを確認し、ブール値を返します。フィールドが値を 含む 場合は、 false
を返します。
NOT(contains([textField], "[string]"))
URL である
テキストフィールドがURLであるかどうかを調べ、ブール値を返す。 フィールドがURLパターンにマッチしない場合、 false
を返す。 true
を返すには、エントリーに標準的なURL要素(例: http
, ://
, .com
)を使用しなければならない。
isURL([textField])
Is an Email
テキストフィールドが電子メールであるかどうかを調べ、ブール値を返します。 このフィールドが特定の電子メールまたは電子メールパターンにマッチしない場合、 false
を返します。 true
を返すには、エントリーに標準的なメール要素を使用する必要があります(例: @gmail
, .com
)。
isEmailAddress([textField])
が空の場合
テキストフィールドが空であるかどうかを調べ、ブール値を返します。 フィールドが空でない場合は、 false
を返す。
isEmpty([textField])
Is Equal To (テキスト付き)
テキストフィールドが特定のString値に等しいかどうかを確認し、ブール値を返します。これが以下と 等しくない 場合、false
を返します。
[textField] == "[string]"
と等しくない (テキスト付き)
テキストフィールドが特定のString値と異なるかどうかを確認し、ブール値を返します。これが以下と 等しい 場合、false
を返します。
[textField] != "[string]"
一致
テキストフィールドが特定の文字列値またはRegEx式に一致するかどうかを調べ、ブール値を返します。 フィールドが値と一致しない場合、 false
を返す。
match([textField], "[string]")
match([textField], "[regex]")
数値フィールド
Liferayでは、整数、長整数、小数、小数の精度フィールドに対して以下の演算子や関数を提供します。 これらのフィールドのいずれかを引数として使用できます。 いくつかの要素では、フィールドの値と比較するための数値を追加することもできます(例:123
、 3.1415
)。
条件(数値入り)
ユーザー入力が一つ以上の条件を満たしているかどうかを調べ、ブール値を返す。 この機能は、 if
文のように動作します。 各式は少なくとも1つの [condition]
(例: [numericField] == 10
)を含み、 true
または false
を返す。 同じ式に複数の条件を加え、どの条件も満たさなかった場合の戻り値を決定することができる(例: [numericField] == 10, [numericField] != 100, true, false
)。
condition([condition], [return-value])
含む(Numericを含む)
数値フィールドが特定の数値を含んでいるかどうかを確認し、ブール値を返します。フィールドが値を 含まない 場合、false
を返します。
contains([numericField], [number])
含まない(数値入り)
数値フィールドが特定の数値を含んでいるかどうかを確認し、ブール値を返します。フィールドが値を 含まない 場合、false
を返します。
NOT(contains([numericField], [number]))
小数である
数値フィールドが10進数であるかどうかを調べ、ブール値を返す。 フィールドが 小数でない場合、 偽の
を返す。
isDecimal([numericField])
整数である
数値フィールドが整数であるかどうかを調べ、ブール値を返す。 フィールド が 整数でない場合、 偽の
を返す。
isInteger([numericField])
Is Equal To (with Numeric) (イコール トゥ)。
数値フィールドが特定の数値に等しいかどうかを確認し、ブール値を返します。これらが 等しくない 場合、false
を返します。
[numericField] == [number]
と等しくない(数値入り)
数値フィールドが特定の数値と異なるかどうかを確認し、ブール値を返します。これらが 等しい 場合、false
を返します。
[numericField] != [number]
以上
数値フィールドが特定の数値より大きいかどうかを調べ、ブール値を返す。 フィールド が より大きくない場合、 偽の
を返す。
[numericField] > [number]
Is Greater Than or Equal To
数値フィールドが特定の数値以上であるかどうかを調べ、ブール値を返す。 フィールド が と同等以上でない場合、 偽の
を返す。
[numericField] >= [number]
以下
数値フィールドが特定の数値より小さいかどうかを調べ、ブール値を返す。 フィールド が より小さくない場合、 偽の
を返す。
[numericField] < [number]
以下もしくは等しい
数値フィールドが特定の数値以下であるかどうかを調べ、ブール値を返す。 フィールド が 以下でない場合、 偽の
を返す。
[numericField] <= [number]
合計
複数の数値フィールドを足し合わせて、他の検証関数で使用できる単一の数値を返す。
sum([numericField], [numericField])
日付フィールド
Liferayは、日付フィールドに対して以下の演算子および関数を提供します。 任意の日付フィールドを引数として使用できます。 また、日付フィールドと比較するための日付値を設定できます(例: 2020-03-19
)。
日付を比較
日付フィールドの値が設定された値と同じかどうかを確認します。 フィールドが日付と一致しない場合は、 false
を返します。
compareDates([dateField], [yyyy-MM-dd])
コンディション(日付入り)
ユーザー入力が一つ以上の条件を満たしているかどうかを調べ、ブール値を返す。 この機能は、 if
文のように動作します。 各式は少なくとも1つの [condition]
(例: [dateField] == 2020-01-01
)を含み、 true
または false
を返す。 同じ式に複数の条件を追加し、どの条件も満たさない場合に戻り値を決定することができる(例: [dateField] == 2020-01-01, [dateField] != 2022-01-01, true, false
)。
condition([condition], [return-value])
未来の日付
日付フィールドの値が未来にあるかどうかを調べ、ブール値を返す。 フィールド が 未来の日付でない場合、 偽の
を返す。
futureDates([dateField], "[yyyy-MM-dd]")
過去の日付
日付フィールドの値が過去であるかどうかを調べ、ブール値を返す。 フィールド が 過去の日付でない場合、 偽の
を返す。
pastDates([dateField], "[yyyy-MM-dd]")
範囲
日付の範囲が過去の日付で始まり、未来の日付で終わるかどうかを確認します。フィールドがその日付の範囲内 ではない 場合、false
を返します。
pastDates([dateField], "[yyyy-MM-dd]")
AND
futureDates([dateField], "[yyyy-MM-dd]")
数学演算子
数値フィールドには、以下のいずれの数学演算子も使用できます。
Plus ( +
)
数値フィールドを追加し、式を作成する。
[numericField] + [numericField]
Minus ( -
)
数値フィールドを互いに引き算して式を作成する。
[numericField] - [numericField]
Divided By ( /
)
ある数値フィールドを別の数値フィールドで割って式を作成する。
[numericField] / [numericField]
Multiply ( *
)
数値フィールドを乗算して式を作成する。
[numericField] * [numericField]
論理演算子
論理演算子は複数の要素で使用し、複数の要素から複雑な条件を集計します。 現在、式ビルダーの検証は AND
と OR
の演算子を提供しています。
AND
: 依存関係を示す。OR
:独立した関係を示す。
次の例では、 AND
節は互いに依存しているので、一緒に適用される必要があります。 これに対し、 OR
節は論理的に分離されており、相互に依存していません。
match([phoneNumberField], "^([1-9]{2}) (?:[2-8]|9[1-9])[0-9]{3}-[0-9]{4}$")
AND match([nameField], "[A-Za-z]{1,50}")
AND match([addressField], "[A-Za-z]{1,50}")
OR [numericField] == 1
OR match([lastNameField], "[A-Za-z]{1,50}")
バリデーション例
以下のバリデーションは一般的な例です。
名前の検証(テキスト付き)
値をアルファベット文字に限定し、許容される文字数を制限する。
match([nameField], ("[A-Za-z]{1,50}")
姓の中に数字を入れることができるようにする。
match([lastNameField], "[A-Za-z][0-9]{1,50}")
パスワード(文字入り)
エントリーが以下のパスワードの条件を満たしているかどうかをチェックします。
- 8文字以上
- 一意の5文字以上
- 1記号以上
- 1つ以上の数値
- スペースなし
match([passwordField], "^(?=.*[A-Za-z])(?=.*d)(?=.*[@$!%*#?&])[[email protected]$!%*#?&]{8,}$")
携帯電話番号(数字入り)
エントリーが電話番号のパターンに一致するかどうかをチェックする。 バリデーションはエントリーを数字に限定し、文字数も制限し、標準的な電話番号のパターンを設定します。
match([phoneNumberField], "^([1-9]{2}) (?:[2-8]|9[1-9])[0-9]{3}-[0-9]{4}$")
郵便番号(数字入り)
エントリーが郵便番号のパターンに一致するかどうかをチェックします。 バリデーションはエントリーを数字に限定し、文字数も制限し、標準的な郵便番号のパターンを設定します。
match([postalField], "^([1-9]{2}) (?:[2-8]|9[1-9])[0-9]{3}-[0-9]{4}$")
年齢幅の指定(日付)
エントリーが18歳以上65歳未満かどうかをチェックします。
pastDates([dateField], startsFrom, responseDate, years, -120, endsOn, responseDate, years, -18)
AND
futureDates([dateField], startsFrom, responseDate, years, 0, endsOn, responseDate, years, 65)