Ekspresi aturan menggunakan comparison operators untuk mencocokkan nilai permintaan dan logical operators untuk menggabungkan kondisi.
Comparison operators
Comparison operators membandingkan nilai permintaan masuk dengan nilai yang ditentukan dalam suatu ekspresi.
eq
Memeriksa apakah nilai permintaan sama dengan nilai yang ditentukan.
Nama operator:
Equal toJenis nilai:
StringContoh:
(http.host eq "www.example.com")
ne
Memeriksa apakah nilai permintaan tidak sama dengan nilai yang ditentukan.
Nama operator:
Not equal toJenis nilai:
StringContoh:
(http.host ne "www.example.com")
contains
Memeriksa apakah nilai permintaan berisi string yang ditentukan.
Nama operator:
ContainsJenis nilai:
StringContoh:
(http.host contains "example.com")
not...contains
Memeriksa apakah nilai permintaan tidak berisi string yang ditentukan.
Nama operator:
Does not containJenis nilai:
StringContoh:
(not http.host contains "example.com")
matches
Memeriksa apakah nilai permintaan sesuai dengan ekspresi reguler yang ditentukan (kompatibel PCRE).
Hanya paket Premium dan Enterprise yang mendukung ekspresi reguler.
Nama operator:
Matches regexJenis nilai:
StringContoh:
(http.host matches "(www|blog)\.example\.com")
not...matches
Memeriksa apakah nilai permintaan tidak sesuai dengan ekspresi reguler yang ditentukan (kompatibel PCRE).
Hanya paket Premium dan Enterprise yang mendukung ekspresi reguler.
Nama operator:
Does not match regexJenis nilai:
StringContoh:
(not http.host matches "(www|blog)\.example\.com")
in
Memeriksa apakah nilai permintaan cocok dengan salah satu nilai dalam himpunan yang ditentukan. Gunakan simbol $ untuk mereferensikan daftar.
Nama operator:
Is inJenis nilai:
ArrayContoh:
(http.host in {"www.example.com" "blog.example.com"})(ip.src in $<LIST_NAME>)
not...in
Memeriksa apakah nilai permintaan tidak cocok dengan nilai apa pun dalam himpunan yang ditentukan. Gunakan simbol $ untuk mereferensikan daftar.
Nama operator:
Is not inJenis nilai:
ArrayContoh:
(not http.host in {"www.example.com" "blog.example.com"})(not ip.src in $<LIST_NAME>)
starts_with
Memeriksa apakah nilai permintaan diawali dengan string yang ditentukan.
Nama operator:
Starts withJenis nilai:
StringContoh:
(starts_with(http.host, "blog"))
not starts_with
Memeriksa apakah nilai permintaan tidak diawali dengan string yang ditentukan.
Nama operator:
Does not start withJenis nilai:
StringContoh:
(not starts_with(http.host, "blog"))
ends_with
Memeriksa apakah nilai permintaan diakhiri dengan string yang ditentukan.
Nama operator:
Ends withJenis nilai:
StringContoh:
(ends_with(http.host, "cn"))
not ends_with
Memeriksa apakah nilai permintaan tidak diakhiri dengan string yang ditentukan.
Nama operator:
Does not end withJenis nilai:
StringContoh:
(not ends_with(http.host, "cn"))
le
Memeriksa apakah nilai permintaan kurang dari atau sama dengan nilai numerik yang ditentukan.
Nama operator:
Less than or equal toJenis nilai:
intContoh:
(ip.geoip.asnum le 45104)
ge
Memeriksa apakah nilai permintaan lebih dari atau sama dengan nilai numerik yang ditentukan.
Nama operator:
Greater than or equal toJenis nilai:
intContoh:
(ip.geoip.asnum ge 45104)
lt
Memeriksa apakah nilai permintaan kurang dari nilai numerik yang ditentukan.
Nama operator:
Less thanJenis nilai:
intContoh:
(ip.geoip.asnum lt 45104)
gt
Memeriksa apakah nilai permintaan lebih dari nilai numerik yang ditentukan.
Nama operator:
Greater thanJenis nilai:
intContoh:
(ip.geoip.asnum gt 45104)
len eq
Memeriksa apakah panjang nilai permintaan sama dengan nilai numerik yang ditentukan.
Nama operator:
Length equalsJenis nilai:
StringContoh:
(len(http.request.cookies["session"]) eq 330688)
len gt
Memeriksa apakah panjang nilai permintaan lebih dari nilai numerik yang ditentukan.
Nama operator:
Length is greater thanJenis nilai:
StringContoh:
(len(http.request.cookies["session"]) gt 330688)
len lt
Memeriksa apakah panjang nilai permintaan kurang dari nilai numerik yang ditentukan.
Nama operator:
Length is less thanJenis nilai:
StringContoh:
(len(http.request.cookies["session"]) lt 330688)
exists
Memeriksa apakah bidang atau atribut tertentu ada dalam permintaan.
Nama operator:
ExistsJenis nilai:
StringContoh:
(exists(http.request.headers["user-agent"]))
not exists
Memeriksa apakah bidang atau atribut tertentu tidak ada dalam permintaan.
Nama operator:
Does not existJenis nilai:
StringContoh:
(not exists(http.request.headers["user-agent"]))
Other operators
lower
Mengonversi nilai permintaan menjadi huruf kecil untuk pencocokan tanpa membedakan kapitalisasi.
Nama operator:
Case-insensitiveJenis nilai:
StringContoh:
(lower(http.request.uri))
Logical operators
Logical operators menggabungkan beberapa ekspresi menjadi composite expression.
not
Membalik hasil ekspresi, mengubah true menjadi false dan sebaliknya.
Nama operator:
Logical NOTContoh:
not (http.host eq "www.example.com")
and
Menghasilkan true hanya jika semua ekspresi yang digabungkan bernilai true.
Nama operator:
Logical ANDContoh:
((http.host eq "www.example.com") and (ip.geoip.country eq "CN"))
or
Menghasilkan true jika salah satu ekspresi yang digabungkan bernilai true.
Nama operator:
Logical ORContoh:
((http.host eq "www.example.com") or (ip.geoip.country eq "CN"))
Grouping symbols
Gunakan tanda kurung ( dan ) untuk mengelompokkan bagian ekspresi dan mengatur urutan evaluasi.
Simbol pengelompokan didukung di editor ekspresi dan API ESA, tetapi tidak didukung di pembuat ekspresi (expression builder).
Contoh ekspresi bersarang:
(http.host eq "www.example.com" and ((http.referer in {"download.example.com"}) or (http.referer in {"image.example.com"})))