Label

Senin, 17 Maret 2025

Tatacara Penulisan RegExp (Regular Expressions)

 Regular Expression (RegExp) adalah pola yang digunakan untuk mencocokkan, mencari, dan memanipulasi teks. Berikut adalah aturan dan sintaks umum dalam RegExp.


1. Delimiter (Pembatas RegExp)

Di berbagai bahasa pemrograman, RegExp bisa ditulis dengan cara yang berbeda:

  • JavaScript, Python, PHP:
    javascript
    /pattern/
    python

    r"pattern"

  • Perl, Sed, AWK, Bash:
    perl

    m/pattern/
  • POSIX (grep, awk, sed, egrep, find):
    bash

    'pattern'

2. Karakter Dasar

Langsung mencocokkan teks biasa:

regex

hello
  • Cocok dengan: hello
  • Tidak cocok dengan: Hello, helloo, helo

Case-insensitive (opsional di beberapa bahasa):

regex

/hello/i
  • Cocok dengan: Hello, HELLO, hElLo

3. Metakarakter (Simbol Khusus)

Metakarakter digunakan untuk membangun pola pencarian yang fleksibel.

SimbolMakna
.Karakter apa pun kecuali baris baru
^Awal baris
$Akhir baris
\Escape karakter (untuk meloloskan metakarakter)
``
()Grup
[]Karakter set
{}Kuantitas

Contoh Penggunaan Metakarakter

  • Pola yang cocok dengan kata yang diawali "cat"

    r

    ^cat
    • catfish
    • dogcat
  • Pola yang cocok dengan angka di akhir string

    regex

    \d+$
    • User123
    • 123User

4. Karakter Kelas (Character Classes)

Karakter kelas digunakan untuk mencocokkan karakter tertentu.

KelasMakna
\dDigit (0-9)
\DBukan digit
\wKarakter huruf (a-z, A-Z, 0-9, _)
\WBukan huruf
\sSpasi, tab, newline
\SBukan spasi

Contoh Character Classes

  • Mencocokkan angka berapa pun dalam teks

    regex

    \d+
    • Harga: 15000
    • Nomor: ABC123
  • Mencocokkan semua kata tanpa karakter khusus

    regex

    \w+
    • Hello123
    • hello-world ❌ (karena - bukan bagian dari \w)

5. Kuantifier (Pengulangan)

Kuantifier menentukan berapa kali suatu pola harus muncul.

SimbolMakna
*0 atau lebih kali
+1 atau lebih kali
?0 atau 1 kali (opsional)
{n}Tepat n kali
{n,}Minimal n kali
{n,m}Minimal n, maksimal m kali

Contoh Kuantifier

  • Mencocokkan "a" yang diikuti beberapa "b"

    regex

    ab+
    • ab
    • abb
    • a
  • Mencocokkan kata yang diawali huruf besar, minimal 3 huruf

    regex

    [A-Z][a-z]{2,}
    • Hello
    • Hi

6. Grup dan Alternatif

  • ( ) → Mengelompokkan ekspresi.
  • | → Menyediakan alternatif (OR).

Contoh Grup dan Alternatif

  • Mencocokkan "cat" atau "dog"

    regex

    cat|dog
    • I have a cat
    • I have a dog
    • I have a fish
  • Mencocokkan kode warna seperti #FFF atau #FFFFFF

    regex
    #([A-Fa-f0-9]{3}|[A-Fa-f0-9]{6})
    • #FFF
    • #123ABC
    • #12345


7. Contoh Penggunaan dalam Berbagai Bahasa

JavaScript

javascript

let regex = /\d{3}-\d{2}-\d{4}/; console.log(regex.test("123-45-6789")); // true

Python

python

import re pattern = r"\d{3}-\d{2}-\d{4}" print(re.match(pattern, "123-45-6789")) # Match

PHP

php

$pattern = "/\d{3}-\d{2}-\d{4}/"; echo preg_match($pattern, "123-45-6789"); // 1 (match)

  • RegExp digunakan untuk pencocokan teks dengan pola tertentu.
  • Metakarakter (., ^, $, \, |, (), [], {}) digunakan untuk menyusun pola pencarian.
  • Kuantifier menentukan berapa kali pola muncul (*, +, ?, {n}).
  • Character Classes mempermudah pencocokan karakter umum (\d, \w, \s).
  • Bisa digunakan di banyak bahasa pemrograman seperti JavaScript, Python, PHP, dan lainnya.



Penerapan RegExp pada Nginx

Nginx menggunakan regular expression (RegExp) dalam beberapa konfigurasi, terutama dalam location, rewrite, dan map. Berikut adalah cara penggunaannya:


1. RegExp dalam location

Dalam blok location, RegExp digunakan untuk mencocokkan URL dan menentukan cara menangani permintaan.

Jenis Location dalam Nginx

TipeContohDeskripsi
Prefix Match (=)location = /aboutHarus cocok persis dengan /about
Prefix Default (/ tanpa RegExp)location /Cocok dengan semua URL yang diawali /
Longest Prefix (^~)location ^~ /static/Prioritas lebih tinggi daripada RegExp, cocokkan prefix tanpa RegExp
Regular Expression (~)location ~ \.php$Sensitif huruf besar/kecil
Case-insensitive RegExp (~*)`location ~* .(jpgpng

Contoh Penggunaan

  • Mengarahkan semua .php ke backend PHP-FPM
    nginx

    location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; }
  • Blokir akses ke file .git
    nginx

    location ~ /\.git { deny all; }
  • Izinkan hanya file gambar dengan format tertentu
    nginx

    location ~* \.(jpg|jpeg|png|gif|ico)$ { expires 30d; access_log off; }

2. RegExp dalam rewrite

rewrite digunakan untuk mengubah URL sebelum diteruskan ke handler.

Format

nginx

rewrite regex replacement [flag];
  • regex → Pola yang akan dicocokkan.
  • replacement → URL baru setelah rewrite.
  • flag → Opsional, seperti last, break, redirect, atau permanent.

Contoh

  • Mengubah /old-page menjadi /new-page
    nginx

    rewrite ^/old-page$ /new-page permanent;
  • Menambahkan trailing slash jika belum ada
    nginx

    rewrite ^(.+[^/])$ $1/ permanent;
  • Mengarahkan blog/xxx ke post.php?id=xxx
    nginx

    rewrite ^/blog/([0-9]+)$ /post.php?id=$1 last;

3. RegExp dalam map

map digunakan untuk mencocokkan suatu pola dan memberikan nilai berdasarkan pola tersebut.

Contoh

  • Mengatur header berdasarkan User-Agent
    nginx

    map $http_user_agent $mobile { ~*android|iphone|ipad "1"; default "0"; } server { location / { if ($mobile = "1") { rewrite ^ /mobile-version.html last; } } }

4. RegExp dalam try_files

try_files digunakan untuk mencoba beberapa file sebelum memberikan 404.

Contoh

  • Coba file statis dulu, jika tidak ada arahkan ke index.php
    nginx

    location / { try_files $uri $uri/ /index.php?$query_string; }

Kesimpulan

  • RegExp banyak digunakan dalam location, rewrite, dan map.
  • Gunakan ~ atau ~* jika ingin mencocokkan pola secara fleksibel.
  • rewrite mengubah URL berdasarkan pola tertentu.
  • map bisa digunakan untuk kondisi khusus berdasarkan pola input.
  • try_files membantu mencari file sebelum memberikan respons

Terbaru

modul pwm dengan arduino pro mini dilengkapi dengan batrai level meter 5 led

  🔋 Contoh Indikator Level Baterai dengan LED (4 Tingkat) 🔧 Tujuan: LED1 menyala jika tegangan ≥ 12.6V (full) LED2 menyala jika teg...

Lainya