エクスプレッションビルダー検証のリファレンス
ライフレイ 7.4 U67+/GA67+
Liferay の Expression Builder を使用してオブジェクト フィールド検証を作成できます。 このツールには、定義済みのフィールド、演算子、関数を使用して複雑な検証ルールを迅速に定義するための統合エディターがあります。 利用可能な要素は、条件サイドパネルで閲覧できます。
式ビルダーの検証は、テキスト、数値、日付、ブール値のフィールド タイプでのみ使用できます。
テキストフィールド
Liferayは、テキストおよび長いテキストフィールドに対して以下の演算子および関数を提供します。 これらのフィールドのいずれかを引数として使用できます。 一部の要素では、フィールドの値と比較する文字列値を追加することもできます (例: "foo"、 "[A-Za-z]{1,50}")。
連結
複数の文字列またはテキストフィールドを結合し、他の検証関数で使用可能な単一の文字列を返します。
concat([textField], "[string]")
条件(テキストあり)
ユーザー入力が 1 つ以上の条件を満たしているかどうかを確認し、ブール値を返します。 この機能は、 if 文のように動作します。 各式には少なくとも 1 つの 条件 (例: textFieldName == "foo") が含まれており、 true または falseを返します。 同じ式に複数の条件を追加し、いずれの条件も満たされない場合の戻り値を決定できます (例: textFieldName == "foo"、 textFieldName == "bar"、 true、 false)。
condition([condition], [return-value])
が以下を含む(テキストあり)
テキストフィールドが特定のString値を含んでいるかどうかを確認し、ブール値を返します。 フィールドに値が含まれていない場合、 falseを返します。
contains([textField], "[string]")
含まない(テキストあり)
テキスト フィールドに特定の文字列値が含まれていないかどうかを確認し、ブール値を返します。 フィールドに値が含まれている場合、 falseを返します。
NOT(contains([textField], "[string]"))
URL である
テキストフィールドがURLであるかどうかを確認し、ブール値を返します。 フィールドがURLパターンに一致しない場合、 falseを返します。 trueを返すには、エントリーに標準的なURL要素(例: http, ://, .com)を使用する必要があります。
isURL([textField])
メールアドレスである
テキストフィールドがメールアドレスであるかどうかを確認し、ブール値を返します。 このフィールドが特定のメールアドレスまたはメールアドレスパターンに一致しない場合、 falseを返します。 trueを返すには、エントリーに標準的なメール要素を使用する必要があります(例: @gmail、.com)。
isEmailAddress([textField])
が空の場合
テキストフィールドが空であるかどうかを確認し、ブール値を返します。 フィールドが空でない場合は、 falseを返します。
isEmpty([textField])
と等しい(テキストあり)
テキストフィールドが特定のString値に等しいかどうかを確認し、ブール値を返します。 それらが 等しくない場合 、 falseを返します。
[textField] == "[string]"
等しくない (テキストあり)
テキストフィールドが特定のString値と異なるかどうかを確認し、ブール値を返します。 それらが 等しい場合 、 falseを返します。
[textField] != "[string]"
一致
テキストフィールドが特定のString値または正規表現と一致するかどうかを確認し、ブール値を返します。 フィールドが値に一致しない場合、 falseを返します。
match([textField], "[string]")
match([textField], "[regex]")
古い値(テキスト付き)
指定されたテキスト フィールドの前の値を取得します。 この値は他の関数や演算子と共に使用できます。
oldValue([textFieldName])
数値フィールド
Liferayでは、整数、長整数、小数、小数の精度フィールドに対して以下の演算子や関数を提供します。 これらのフィールドのいずれかを引数として使用できます。 いくつかの要素では、フィールドの値と比較するための数値を追加することもできます(例:123、 3.1415)。
条件(数値あり)
ユーザー入力が 1 つ以上の条件を満たしているかどうかを確認し、ブール値を返します。 この機能は、 if 文のように動作します。 各式には少なくとも 1 つの 条件 (例: numericFieldName == 10) が含まれており、 true または falseを返します。 同じ式に複数の条件を追加し、いずれの条件も満たされない場合の戻り値を決定できます (例: numericFieldName == 10、numericFieldName != 100、true、false)。
condition([condition], [return-value])
が以下を含む(数値あり)
数値フィールドが特定の数値を含んでいるかどうかを確認し、ブール値を返します。 フィールドに値が含まれていない場合、 falseを返します。
contains([numericField], [number])
含まない(数値あり)
数値フィールドが特定の数値を含んでいるかどうかを確認し、ブール値を返します。 フィールドに値が含まれている場合、 falseを返します。
NOT(contains([numericField], [number]))
小数である
数値フィールドが小数であるかどうかを確認し、ブール値を返します。 フィールド が小数でない場合 、 falseを返します。
isDecimal([numericField])
整数である
数値フィールドが整数であるかどうかを確認し、ブール値を返します。 フィールド が整数でない場合 、 falseを返します。
isInteger([numericField])
と等しい(数値あり)
数値フィールドが特定の数値に等しいかどうかを確認し、ブール値を返します。 それらが 等しくない場合 、 falseを返します。
[numericField] == [number]
等しくない (数値あり)
数値フィールドが特定の数値と異なるかどうかを確認し、ブール値を返します。 それらが 等しい場合 、 falseを返します。
[numericField] != [number]
以上
数値フィールドが特定の数値より大きいかどうかを確認し、ブール値を返します。 フィールド が より大きくない場合は、 falseを返します。
[numericField] > [number]
以上もしくは等しい
数値フィールドが特定の数値以上もしくは等しいかどうかを確認し、ブール値を返します。 等しくないもしくは以上の場合、 falseを返します。
[numericField] >= [number]
以下
数値フィールドが特定の数値以下かどうかを確認し、ブール値を返します。 フィールド が 小さくない場合は、 falseを返します。
[numericField] < [number]
以下もしくは等しい
数値フィールドが特定の数値以下もしくは等しいかどうかを確認し、ブール値を返します。 等しくないもしくは以下の場合、 falseを返します。
[numericField] <= [number]
古い値(数値付き)
指定された数値フィールドの前の値を取得します。 この値は他の関数や演算子と共に使用できます。
oldValue([numericField])
合計
複数の数値フィールドをまとめて追加し、他の検証関数で使用可能な単一の数値を返します。
sum([numericField], [numericField])
日付フィールド
Liferayは、日付フィールドに対して以下の演算子および関数を提供します。 任意の日付フィールドを引数またはパラメーターとして使用できます。 さらに、日付フィールドと比較するための固定日付値 ("yyyy-MM-dd") を入力することもできます (例: 2020-03-19)。
日付を比較
日付フィールドの値がパラメータと同じかどうかを確認します。 フィールドがパラメータと一致しない場合は、 falseを返します。
compareDates([dateField], [parameter])
条件(日付あり)
ユーザー入力が 1 つ以上の条件を満たしているかどうかを確認し、ブール値を返します。 この機能は、 if 文のように動作します。 各式には少なくとも 1 つの 条件 (例: dateFieldName == 2020-01-01) が含まれており、 true または falseを返します。 同じ式に複数の条件を追加し、いずれの条件も満たされない場合の戻り値を決定できます (例: dateFieldName == 2020-01-01、dateFieldName != 2022-01-01、true、false)。
condition([condition], [return-value])
未来の日付
日付フィールドの値が設定されたパラメータと等しいかそれ以降であるかどうかを確認します。 もし がでない場合、関数は falseを返します。
futureDates([dateField], [parameter])
例えば、
futureDates(endDate, startDate)
futureDates(endDate, "2024-01-01")
最初の例では、 endDate が startDate の値と等しいかそれ以降かどうかを確認します。 2 番目の例では、 endDate の値が 2024-01-01以降かどうかを確認します。
古い値(日付付き)
指定された日付フィールドの前の値を取得します。 この値は他の関数や演算子と共に使用できます。
oldValue([dateField])
過去の日付
日付フィールドの値が設定されたパラメータと等しいかそれ以前であるかどうかを確認します。 もし がでない場合、関数は falseを返します。
pastDates([dateField], [parameter])
例えば、
pastDates(startDate, endDate)
pastDates(startDate, "2024-01-01")
最初の例では、 startDate が endDate の値と等しいかそれより前かどうかを確認します。 2 番目は、 startDate の値が 2024-01-01と等しいかそれ以前かどうかを確認します。
範囲
日付フィールドの値が過去の日付で始まり、将来の日付で終わるかどうかを確認します。 日付 が範囲内 でない場合は、 falseを返します。
futureDates([dateField], [parameter])
AND
pastDates([dateField], [parameter])
例えば、
futureDates(endDate, startDate)
AND
pastDates(startDate, endDate)
これは、 endDate 値が startDate 値と等しいかそれ以降であるかどうか、また startDate 値が endDate 値と等しいか以前であるかどうかをチェックします。
数学演算子
数値フィールドには、以下のいずれの数学演算子も使用できます。
プラス ( +)
複数の数値フィールドを加算して式を作成します。
[numericField] + [numericField]
マイナス ( -)
複数の数値フィールドをお互いに減算して式を作成します。
[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}")
検証例
以下の検証は一般的な例です。 これらを使用するには、 fieldName を検証するフィールドの名前に置き換えます。
名前の検証(テキストあり)
値をアルファベット文字に限定し、許容される文字数が制限されます。
match(fieldName, "[A-Za-z]{1,50}")
姓に数字を使用できます。
match(fieldName, "[A-Za-z][0-9]{1,50}")
パスワード(テキストあり)
エントリーが以下のパスワード基準を満たしているかどうかをチェックします。
- 8文字以上
- 一意の5文字以上
- 1記号以上
- 1つ以上の数値
- スペースなし
match(fieldName, "^(?=.*[A-Za-z])(?=.*d)(?=.*[@$!%*#?&])[A-Za-zd@$!%*#?&]{8,}$")
携帯電話番号(数字あり)
エントリーが電話番号のパターンに一致するかどうかを確認します。 検証はエントリーを数字に限定し、文字数も制限し、標準的な電話番号のパターンを設定します。
match(fieldName, "^([1-9]{2}) (?:[2-8]|9[1-9])[0-9]{3}-[0-9]{4}$")
郵便番号(数値あり)
エントリーが郵便番号のパターンに一致するかどうか確認します。 検証はエントリーを数字に限定し、文字数も制限し、標準的な郵便番号のパターンを設定します。
match(fieldName, "^([1-9]{2}) (?:[2-8]|9[1-9])[0-9]{3}-[0-9]{4}$")
年齢幅の指定(日付)
エントリーが18歳以上65歳未満かどうかを確認します。
pastDates(fieldName, startsFrom, responseDate, years, -120, endsOn, responseDate, years, -18)
AND
futureDates(fieldName, startsFrom, responseDate, years, 0, endsOn, responseDate, years, 65)
関係性の検証
ライフレイ 2025年第2四半期以降
子オブジェクト フィールドが親オブジェクト フィールドと等しくないことを強制します。
name != r_whichCountry_c_countryId_name