すべてのプロダクト
Search
ドキュメントセンター

Edge Security Acceleration:Functions

最終更新日:Feb 13, 2026

ESA ルールは、式の中の値を操作および検証するための関数を提供します。これには、HTTP リクエストから取得した値を操作する変換関数が含まれます。

ルールでサポートされる変換関数

concat

文字列を連結します。

  • フォーマットconcat(String | Integer | Bytes | Array elements):String

  • ロジック:コンマ区切りの値のリストを受け取り、それらを 1 つの文字列に連結します。

    • concat("String1"," ","String",2)"String1 String2" を返します。

    • concat("/archive",http.request.uri.path) は、URI パスの先頭にパスセグメント "/archive" を追加します。

    • concat("userid=123&",http.request.uri.query) は、URI クエリ文字列の先頭にキーと値のペア "userid=123" を追加します。

    • concat("https://www.example.com",http.request.uri.path) は、新しいホスト名と元のリクエストパスを組み合わせて、新しい URL を生成します。

ends_with

文字列はここで終了します。

  • フォーマットends_with(source String,substring String):Boolean

  • ロジック

    • ソース文字列部分文字列 で終わる場合は、true を返します。それ以外の場合は、false を返します。

    • source String は、フィールドである必要があります。リテラル文字列であってはなりません。たとえば、ends_with("foo.html",".html") と記述しないでください。

  • http.request.uri.path"/welcome.html" の場合、ends_with(http.request.uri.path,".html")true を返します。

lower

文字列を小文字に変換します。

  • フォーマットlower(String):String

  • ロジックフィールドの文字列出力を小文字に変換します。大文字の ASCII 文字のみが変換されます。他のすべての文字は変更されません。

  • http.host"WWW.example.com" の場合、lower(http.host)=="www.example.com"true を返します。

regex_replace

正規表現パターンに一致する部分文字列を置換します。

  • フォーマットregex_replace(source String,regular_expression String,replacement String):String

  • 処理ロジック

    • 正規表現に一致する部分文字列の最初の一致箇所を置換文字列に置き換え、結果を返します。

    • デフォルトでは、大文字と小文字を区別して照合します。

    • ソース文字列に複数の一致箇所が存在する場合でも、最初の一致箇所のみが置換されます。

    • 置換文字列内の $ 文字をエスケープするには、別の $ 文字をプレフィックスとして追加します。

    • 置換文字列には、${<NUMBER>} の形式で正規表現のキャプチャグループへのリファレンスを含めることができます。ここで、<NUMBER> はキャプチャグループの番号です。${1}${2} など、最大 8 つのリファレンスがサポートされます。

    • 静的な文字の照合と置換:

      • 文字列の照合に成功した場合: regex_replace("/animal/cat","/cat$","/dog")=="/animal/dog"

      • 一致が見つからない場合、ソース文字列は変更されません:

        • 異なる文字列: regex_replace("/x","^/y$","/z")=="/x"

        • 大文字と小文字を区別する文字列: regex_replace("/cat","^/CAT$","/dog")=="/cat"

      • 複数の一致が存在する場合、最初の一致のみが置換されます: regex_replace("/a/a","/a","/b")=="/b/a"

      • 置換文字列内の $ 文字のエスケープ: regex_replace("/b","^/b$","/b$$")=="/b$"

      • 置換文字列でのキャプチャグループの使用: regex_replace("/foo/a/path","^/foo/([^/]*)/(.*)$","/bar/${2}/${1}")=="/bar/path/a"

    • 動的フィールドの照合と置換:

      • ソース文字列は、動的フィールドを使用してクライアントリクエストからパス情報を取得します。この例では、パス内の /cat//dog/ に置き換えます: regex_replace(http.request.uri.path,"/cat/(.*)$","/dog/${1}")

      • 複雑な置換の例:元のリクエストパス内の各 + 文字を文字列 %2B に置き換えます: regex_replace(http.request.uri.path, "^([^+]*)\\+([^+]*)\\+(.*)$", "${1}%2B${2}%2B${3}")

starts_with

前方一致

  • フォーマットstarts_with(source String,substring String):Boolean

  • ロジック

    • source Stringsubstring String で始まる場合、true を返します。それ以外の場合、false を返します。

    • source String は、フィールドである必要があります。リテラル文字列にはできません。たとえば、starts_with("foo.html",".html") のように記述しないでください。

  • http.request.uri.path"/welcome.html" の場合、starts_with(http.request.uri.path,".html")true を返します。

to_string

文字列出力。

  • フォーマットto_string(Integer | Boolean | IP address):String

  • ロジックIntegerBoolean、または IP アドレスの値の文字列表現を返します。

    • ip.src.asnum の結果が 15169 の場合、to_string(ip.src.asnum)"15169" を返します。

    • ssl の結果が true の場合、to_string(ssl)"true" を返します。

    • ip.src の結果が 192.168.0.1 の場合、to_string(ip.src)"192.168.0.1" を返します。

upper

文字列を大文字に変換します。

  • フォーマットupper(String):String

  • ロジックフィールドの文字列出力を大文字に変換します。小文字の ASCII 文字のみが変換されます。他のすべてのバイトは変更されません。

  • http.host"www.example.com" の場合、upper(http.host)"WWW.EXAMPLE.COM" を返します。

wildcard_replace

ワイルドカードによる文字列マッチング。

  • フォーマットwildcard_replace(source Bytes,wildcard_pattern Bytes,replacement Bytes,flags Bytes optional):String

  • ロジック

    • 0 個以上の * ワイルドカード文字を含むパターンに対してソース文字列を照合します。一致した部分を置換文字列に置き換え、結果を返します。置換文字列には、${1}${2} などのワイルドカードキャプチャグループへのリファレンスを含めることができます。最大 8 つのリファレンスがサポートされます。

    • 一致がない場合、この関数は元のソース文字列を返します。

    • source パラメーターはフィールドである必要があり、リテラル文字列は指定できません。さらに、`source` の値全体が `wildcard_pattern` パラメーターと一致する必要があります。フィールド値の一部のみと一致することはできません。

    • wildcard_pattern パラメーターにリテラルの * 文字を入力するには、\* でエスケープする必要があります。また、\ 文字も \\ でエスケープする必要があります。** のように、エスケープされていない * 文字が 2 つ続くのは無効であり、使用できません。文字のエスケープを行うには、wildcard_pattern パラメーターに raw 文字列構文を使用します。

    • replacement パラメーターにリテラルの $ 文字を入力するには、$$ でエスケープする必要があります。

    • 大文字と小文字を区別するワイルドカード照合を実行するには、flags パラメーターを s に設定します。

    • この関数は遅延マッチングを使用します。各 * メタ文字は、可能な限り短い文字列に一致します。

    • 完全な URI が https://apps.example.com/calendar/admin?expand=true の場合、式 wildcard_replace(http.request.full_uri,"https://*.example.com/*/*","https://example.com/${1}/${2}/${3}")https://example.com/apps/calendar/admin?expand=true を返します。

    • 完全な URI が https://example.com/applications/app1 の場合、式 wildcard_replace(http.request.full_uri,"/applications/*","/apps/${1}")https://example.com/applications/app1 を返します。ワイルドカード式が完全な URI と一致しなかったため、値は変更されません。URI パスの照合には http.request.uri.path フィールドを使用してください。

    • URI パスが /calendar の場合、式 wildcard_replace(http.request.uri.path,"/*","/apps/${1}")/apps/calendar を返します。

    • URI パスが /Apps/calendar の場合、式 wildcard_replace(http.request.uri.path,"/apps/*","/${1}")/calendar を返します。デフォルトでは、照合時に大文字と小文字は区別されません。

    • URI パスが /Apps/calendar の場合、式 wildcard_replace(http.request.uri.path,"/apps/*","/${1}","s")/Apps/calendar を返します。flags パラメーターが s に設定され、大文字と小文字を区別する照合が有効になっています。パターンが元の URI パスと一致しないため、結果は変更されません。

    • URI パスが /apps/calendar/login の場合、式 wildcard_replace(http.request.uri.path,"/apps/*/login","/${1}/login")/calendar/login を返します。