Tidak suka iklan? Pergi Bebas Iklan Hari ini

**Sampul Pengembang Regex Ringkasan Cepat** *(Note: The title was translated into Indonesian as a guide for context, but only the literal translation of "The Developer’s Regex Cheat Sheet" would be "Kumpulan Ringan Regex untuk Pengembang.")* Polah yang Penting Diingat

Diterbitkan pada
**Sampul Pengembang Regex Ringkasan Cepat: Pola yang Layak Diingat***(Note: This is a literal translation of the title structure, not a direct word-for-word Indonesian equivalent.)*
IKLAN · HAPUS?

Regulasi ekspresi (regex) adalah salah satu keterampilan yang memberikan manfaat besar di setiap bahasa program yang akan kamu tulis. Sama pola yang memvalidasi alamat email dalam Python dapat menguraikan string query dalam Go dan membersihkan input formulir dalam JavaScript. Pelajari sekali, gunakan di mana saja.

Ini bukan panduan sintaksis. Ini adalah pola yang Anda sesuaikan dalam proyek nyata — yaitu pola yang muncul pada validator form, pemrosesan log, router URL, dan saluran data. Tabel di bawah ini merupakan inti dari hal tersebut. Paragraf-parafaf di sekitarnya menjelaskan tempat di mana orang sering mengalami kecelakaan.

**Polah yang Layak Diketahui**

Ini 11 pola mencakup situasi yang sering muncul dalam kode produksi. Gunakan Uji Regex untuk memvalidasi mereka terhadap masukan Anda sendiri sebelum menyambungkannya.

PolaApa yang Dapat DipasangkanContoh PertandinganCatatan
^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$Alamat emailuser@example.comDesainnya permissive — RFC 5322 sebenarnya adalah lubang tikus. Tautkan ^$.
https?:\/\/[\w\-._~:/?#[\]@!$&'()*+,;=%]+URL HTTP/HTTPShttps://example.com/path?q=1Tidak memvalidasi struktur—hanya mengkonfirmasi apakah terlihat seperti URL.
^(\d{1,3}\.){3}\d{1,3}$Alamat IP v4 (format hanya)192.168.1.1Tempa 999.999.999.999 — validasi rentang dalam kode, bukan regex.
^(\+\d{1,3}[\s-])?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$Nom nomang telepon Amerika Utara(555) 867-5309Mengatur pengelolaan pembatas umum. Format internasional sangat beragam sehingga satu pola tidak dapat mencakup semua kasus.
[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}UUID versi 4550e8400-e29b-41d4-a716-446655440000tidak kasar (case-insensitive) — gunakan i tambahkan atau tambah A-F kelas karakter
^[a-z0-9]+(?:-[a-z0-9]+)*$Slog URLmy-article-titleTidak ada garis putus depan/belakang atau garis putus berurutan.
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$Tanggal ISO 8601 (TTMMTTT)2026-04-10Menyelesaikan format dan rentang, bukan kevalidan kalender (February 31 lolos).
^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$warna hex CSS#ff6600 atau #f60Kedua pendekan angka **3** dan **6 digit**. Tambahkan {8} untuk nomor RGBA hexa dengan 8 digit
^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([\w.-]+))?(?:\+([\w.-]+))?$Kata versi semantik1.2.3-beta.1+build.42Mengambil metadata prerelease dan build sebagai grup opsi yang dapat diabaikan.
\b(?:\d{4}[\s-]?){3}\d{4}\bNomor kartu kredit (tampilkan dengan masker, jangan validasi)4111 1111 1111 1111Gunakan untuk pemaskiran dalam log, bukan validasi. Periksa Luhn memerlukan kode.
\s+Spasi berjalan"hello world""hello world"Ganti dengan satu spasi untuk normalisasi ruang kosong.

Di mana pola pecah dalam praktik nyata

Cerdas vs. Malas Cari Pasangan

Kata penghitung seperti * dan + sangka-sangka oleh default — mereka mengonsumsi sebanyak-banyaknya. Ini menimpakan pada Anda ketika memisahkan konten antara pembatas. <.+> dalam <b>bold</b> mencocokkan seluruh string, bukan <b>Pindah ke mode *lazy* .+? hentikan pada penutupan pembuka pertama daripada yang terakhir.

Pembenahan: Ketika ^ dan $ Tidak Cukup

Tanpa anchor, pola dapat mencocokkan di mana saja dalam sebuah string. \d+ mencocok abc123def — itu menemukan angka di tengah. Untuk validasi string lengkap, wrap pola dalam ^...$Dalam mode multi-linier (m bendera) ^ dan $ Batasan garis baris, bukan batas seluruh string. Jika Anda sedang melakukan validasi nilai tunggal (seperti alamat email atau UUID), m intencionalnya, bukan kebiasaan.

Kesalahan Tanda Bendera Berbaris

Itu m ubah bendera apa yang ^ dan $ tidak jelas. s Flag **`dotAll`** mengubah . tidak cocok — tanpa itu . tidak cocok dengan karakter baris baru. Memproses entri log berbaris banyak .+Anda memerlukan s atau [\s\S]+ Sebagai cadangan untuk mesin yang tidak mendukung `dotAll`.

Menguji Sebelum Memasang Kabel

Jangan hanya menambahkan regex ke dalam aplikasi dan menguji dengan satu input yang berjalan lancar saja. Pola akan gagal pada kasus-kasus batas: karakter Unicode, string kosong, spasi awal/akhir, atau input yang hampir tetapi tidak benar-benar valid. Uji Pengujian Regex IO Tools Anda dapat menjalankan pola terhadap beberapa string uji secara bersamaan, sehingga Anda dapat memeriksa kasus yang valid dan kasus yang tidak valid secara bersamaan sebelum kode diluncurkan. Kertas Kerapian Regex (alat bantu) Bermanfaat ketika Anda sedang dalam proses membuat pola dan membutuhkan referensi sintaks cepat tanpa harus keluar dari browser.

Ketika melakukan uji coba, buat matriks: apa yang harus cocok, apa yang pasti tidak cocok, dan apa yang berada di batasnya. Validasi alamat email yang menerima --- *Nota:* Saya tidak mengubah kata-kata dalam tanda kurung atau format HTML lainnya. user@ tolak user+tag@example.co.uk lebih buruk daripada tidak ada validator sama sekali.

Keterampilan Bahasa yang Menarik untuk Diketahui

Sifat-sifat tabel di atas secara umum dapat diterapkan, tetapi komponen utama (engine) memainkan peran penting pada batas-batasnya.

  • Bahasa Indonesia: JavaScript menggunakan mesin regex ECMA. Grup penangkapan bernama ((?<name>...)Dengan ES2018+ mendukung simbol **kurung kurawal** `{ }`. v Flag (dibuat pada ES2024) menambahkan notasi set dan escape Unicode properti. Pengamatan ke depan berfungsi; pengamatan ke belakang adalah ES2018+ dan memiliki batasan panjang variabel dalam beberapa versi V8 yang lebih tua.
  • Ular piton menggunakan re modul (PCRE berdekatan tetapi tidak sama). re.compile() polah ini layak digunakan — pola yang terkompilasi lebih cepat ketika dipanggil secara berulang dalam loop. Perbedaan yang subtil: bahasa Python \b Pembatasan kata adalah **awas Unicode** secara default, sehingga ia berfungsi pada karakter kata yang bukan ASCII. JavaScript’s \b hanya dalam format ASCII kecuali jika Anda menggunakan u atau v bendera.
  • Pergi menggunakan sintaksis RE2 yang secara sengaja tidak termasuk referensi balik (backreferences) dan predikat maju (lookahead). Ini adalah keputusan keamanan — RE2 memastikan pemasangan linear waktu, yang mencegah pembalikan katakronisme berkatastrofal. Jika Anda mengportkan pola dari Python atau JS ke Go dan menggunakan predikat maju atau referensi balik, Anda akan perlu merestructurasi logikanya.

Contoh Nyata: Validasi Email Melalui Berbagai Bahasa

Sama pola, dua implementasi—validator formulir JavaScript dan pemeriksaan masukan Python:

// JavaScript — client-side form validation
const EMAIL_RE = /^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$/;

function validateEmail(input) {
  const value = input.trim();
  if (!EMAIL_RE.test(value)) {
    throw new Error(`Invalid email address: ${value}`);
  }
  return value;
}

// Usage
document.querySelector('#signup-form').addEventListener('submit', (e) => {
  e.preventDefault();
  try {
    const email = validateEmail(e.target.email.value);
    submitForm({ email });
  } catch (err) {
    showError(err.message);
  }
});
# Python — API request validation
import re

EMAIL_RE = re.compile(r'^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$')

def validate_email(value: str) -> str:
    value = value.strip()
    if not EMAIL_RE.match(value):
        raise ValueError(f"Invalid email address: {value!r}")
    return value

# Usage in a Flask route
@app.route('/signup', methods=['POST'])
def signup():
    try:
        email = validate_email(request.json.get('email', ''))
    except ValueError as e:
        return jsonify({'error': str(e)}), 400
    # continue with valid email...

Kedua bahasa tersebut menggunakan pola dasar yang sama. Perbedaan yang berarti hanya ada pada: Python’s re.compile() mengompilasi terlebih dahulu pola sehingga panggilan berulang tidak menginterpretasikannya lagi pada setiap invokasi—layak dilakukan di jalur yang sangat panas.

Buku Catatan Ringkas Pribadi

Pola-pola di atas menangani kasus-kasus umum, tetapi Anda akan mengumpulkan pola sendiri seiring waktu — format log yang spesifik untuk stack Anda, skema identifikasi dari sistem internal, dan format tanggal yang dituntut oleh tim data. File pendek, terpilih dengan uji coba pola yang dapat dipastekan lebih berharga daripada mengingat aturan sintaks. Uji cobalah mereka sekali, anotasi dengan tujuan masing-masing, dan rujuklah pola tersebut daripada membangun ulang dari awal setiap kali.

Ingin bebas iklan? Bebas Iklan Hari Ini

Instal Ekstensi Kami

Tambahkan alat IO ke browser favorit Anda untuk akses instan dan pencarian lebih cepat

Ke Ekstensi Chrome Ke Ekstensi Tepi Ke Ekstensi Firefox Ke Ekstensi Opera

Papan Skor Telah Tiba!

Papan Skor adalah cara yang menyenangkan untuk melacak permainan Anda, semua data disimpan di browser Anda. Lebih banyak fitur akan segera hadir!

IKLAN · HAPUS?
IKLAN · HAPUS?
IKLAN · HAPUS?

Pojok Berita dengan Sorotan Teknologi

Terlibat

Bantu kami untuk terus menyediakan alat gratis yang berharga

Belikan aku kopi
IKLAN · HAPUS?