logo
GeekFormat

Alat Uji Regex

Regex Tester
//
无匹配
Worker · 500ms 超时中断
分类模板库
点选即可填充 pattern / flags / demo
测试文本37
匹配详情
0

还没有匹配结果

输入正则与文本后,这里会展示每个匹配、捕获组和命名分组。

匹配高亮预览· Hover / 点击右侧条目联动
Ada Lovelace Alan Turing Grace Hopper

统计

匹配数量
0
执行耗时
0ms
捕获组
0
命名分组
0

命名分组汇总

当前没有命名分组。

Alat uji ekspresi reguler (Regex Tester) online gratis, mendukung pengujian pencocokan real-time JS, melihat grup penangkapan/grup bernama, pratinjau penggantian, penjelasan sintaks regex, membawa perlindungan timeout anti ReDoS Web Worker, dilengkapi perpustakaan template regex umum, cocok untuk pengembang debug dan memverifikasi regex dengan cepat.

Rekomendasi Terkait

Kasus penggunaan

  • Menguji secara online apakah regex email, nomor HP, nomor KTP, URL benar saat mengembangkan aturan validasi formulir
  • Menggunakan regex untuk mengekstrak timestamp, pesan kesalahan, alamat IP di log tingkat ERROR/INFO saat analisis log
  • Melihat pratinjau efek penggantian regex saat pembersihan data/ETL, seperti konversi format tanggal, penyembunyian informasi sensitif (tanda bintang di tengah nomor HP)
  • Memverifikasi apakah regex ekstraksi konten cocok dengan tepat fragmen HTML atau bidang JSON target saat menulis web crawler
  • Memahami arti setiap karakter meta dan pengkuantitas melalui panel「Jelaskan」saat mempelajari ekspresi reguler, dikombinasikan dengan template cepat mahir
  • Mengirim regex yang diragukan ke rekan kerja melalui tautan berbagi saat Code Review, bersama-sama debug dan mengoptimalkan

Fitur

  • Eksekusi sandbox Web Worker: Regex berjalan di thread Worker terpisah, timeout 500ms otomatis terputus, sepenuhnya mencegah ReDoS membuat browser hang
  • Pencocokan real-time + sorotan warna: Memasukkan langsung menampilkan hasil pencocokan, hasil yang berbeda disorot dengan 5 warna berbeda, hover terhubung dengan panel detail
  • Grup penangkapan + grup bernama: Setiap hasil pencocokan otomatis diperluas menampilkan semua grup penangkapan($1/$2) dan grup bernama($<name>), serta ringkasan statistik
  • Pratinjau penggantian: Memasukkan string penggantian mempratinjau hasil secara real-time, mendukung tombol cepat sintaks $1/$&/$`/$'/$<name>
  • Penjelasan sintaks regex: Menganalisis ekspresi reguler secara otomatis, menjelaskan arti sintaks karakter meta, pengkuantitas, grup, jangkar per elemen
  • 12 template umum: Membawa 12 template regex frekuensi tinggi seperti email/URL/nomor HP/Tionghoa/IPv4/UUID/tanggal/log/tag HTML, dll., isi dengan satu klik
  • Toggle 6 bendera: Toggle tombol visual bendera g/i/m/s/u/y, tidak perlu menghafal sintaks
  • Tautan berbagi: Satu klik membuat URL yang berisi pattern/flags/text, salin ke rekan kerja untuk mereproduksi situasi pengujian secara langsung
  • Statistik eksekusi: Menampilkan real-time jumlah pencocokan, waktu eksekusi(ms), total grup penangkapan, jumlah grup bernama
  • Batas 1500 pencocokan: Otomatis terpotong untuk mencegah teks terlalu panjang membuat halaman lambat, regex salah menampilkan pesan kesalahan sintaks yang ramah

Cara Penggunaan

  1. Masukkan ekspresi reguler di kotak input antara / / di atas (tidak perlu menambahkan garis miring sendiri), masukkan bendera di sebelah kanan (seperti g、gi、gim) atau klik tombol di bawah untuk beralih
  2. Tempel atau masukkan konten teks yang ingin dicocokkan di area「Teks Uji」, hasil pencocokan akan disorot warna secara real-time
  3. Klik panel「Detail Pencocokan」di sebelah kanan untuk melihat posisi, konten, grup penangkapan dan grup bernama dari setiap hasil pencocokan
  4. Beralih ke tab「Area Penggantian」, masukkan string penggantian (mendukung referensi $1/$&/$<name>, dll.), pratinjau hasil penggantian secara real-time
  5. Beralih ke tab「Penjelasan Ekspresi」, lihat penjelasan sintaks regex per elemen yang dibuat secara otomatis
  6. Saat membutuhkan template umum, klik「Perpustakaan Template Kategori」di sebelah kiri pilih template yang sesuai isi dengan satu klik; setelah debug selesai klik「Bagikan」untuk membuat tautan

Pertanyaan Umum

Apa itu ReDoS? Mengapa pengujian regex perlu mencegah ReDoS?

ReDoS (Regular Expression Denial of Service - Serangan penolakan layanan ekspresi reguler) adalah ketika beberapa ekspresi reguler yang dibuat secara jahat (seperti `(a+)+$` saat mencocokkan string panjang) akan memicu backtracking bencana (catastrophic backtracking), menyebabkan penggunaan CPU 100%, browser hang atau server crash. Alat ini menggunakan Web Worker untuk mengeksekusi pencocokan regex di sandbox, mengatur timeout 500ms yang otomatis terputus, bahkan jika memasukkan regex jahat yang memicu backtracking tidak akan membuat browser Anda hang, ini adalah fitur keamanan inti dari alat ini.

Apa arti enam bendera g, i, m, s, u, y dalam ekspresi reguler?

g (global) pencocokan global, mencari semua hasil bukan yang pertama; i (ignoreCase) mengabaikan huruf besar/kecil; m (multiline) mode multiline, membuat ^ dan $ cocok dengan awal/akhir setiap baris; s (dotAll) membuat titik . cocok dengan semua karakter termasuk karakter baris baru; u (unicode) mode Unicode, menangani emoji dan karakter multibyte dengan benar; y (sticky) pencocokan lengket, cocok tepat dari posisi lastIndex. Alat ini menyediakan tombol toggle visual untuk 6 bendera, klik untuk mengaktifkan/menonaktifkan secara real-time.

Apa itu grup penangkapan dan grup bernama? Bagaimana cara menggunakannya?

Grup penangkapan dibungkus dengan tanda kurung `(pattern)`, setelah cocok dapat mengekstrak substring melalui referensi $1, $2, dll. Grup bernama menggunakan sintaks `(?<name>pattern)`, setelah cocok dapat direferensikan melalui `$<name>`, kode lebih mudah dibaca. Misalnya setelah mencocokkan tanggal dengan `(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})`, dapat memformat ulang dalam string penggantian dengan `$<year>年$<month>月$<day>日`. Alat ini akan secara otomatis mendaftarkan hasil grup penangkapan dan grup bernama dari setiap pencocokan.

Sintaks regex bahasa pemrograman apa yang didukung?

Alat ini didasarkan pada mesin RegExp asli JavaScript, secara umum kompatibel dengan sintaks mesin utama seperti JS/TypeScript, modul Python re, Java java.util.regex, PHP preg_*, Go regexp (semuanya berbasis aliran PCRE/Perl), perbedaan utama ada pada beberapa fitur lanjutan (seperti penulisan grup bernama `(?P<name>)` di Python, lookbehind panjang variabel di .NET). 99% regex dalam pengembangan sehari-hari (validasi/ekstraksi email, nomor HP, URL, tanggal, dll.) umum di semua mesin, dapat langsung diuji di alat ini lalu disalin ke kode untuk digunakan.

Bagaimana cara membagikan regex yang sudah diuji ke rekan kerja?

Klik tombol「Bagikan」di toolbar atas, alat akan otomatis mengkodekan ekspresi reguler, bendera, teks uji saat ini ke parameter URL, dan menyalin tautan ke clipboard. Rekan kerja yang membuka tautan akan melihat status pengujian yang sama persis (pattern+flags+testText), sangat cocok untuk kolaborasi tim dan debug jarak jauh.

Apa arti simbol khusus $1、$&、$`、$' dalam string penggantian?

Dalam string penggantian: $1、$2... menunjukkan grup penangkapan ke-N; $& menunjukkan seluruh teks yang cocok; $` menunjukkan bagian sebelum teks yang cocok; $' menunjukkan bagian setelah teks yang cocok; $$ menunjukkan karakter $ literal; $<name> menunjukkan grup bernama. Misalnya mengganti `(\d{4})-(\d{2})-(\d{2})` dengan `$2/$3/$1` dapat mengubah 2026-03-12 menjadi 03/12/2026. Area penggantian alat ini menyediakan tombol sisipkan cepat untuk simbol khusus ini.

Apa itu Ekspresi Reguler (Regex/RegExp)?

Ekspresi reguler (Regular Expression, disingkat Regex/RegExp) adalah bahasa pola teks yang mendeskripsikan dan mencocokkan serangkaian string yang sesuai dengan aturan sintaks tertentu dengan satu string. Sejarahnya dapat ditelusuri kembali ke model matematika neuron yang diusulkan oleh ahli saraf Warren McCulloch dan matematikawan Walter Pitts pada tahun 1950-an, kemudian matematikawan Stephen Kleene pada tahun 1956 berdasarkan itu mengusulkan deskripsi aljabar dari「himpunan reguler」. Bapak Unix Ken Thompson pada akhir 1960-an pertama kali mengimplementasikan ekspresi reguler di editor QED, sejak itu ekspresi reguler menjadi fungsi inti dari rantai alat Unix (grep, sed, awk, vi).

Dalam bahasa pemrograman modern, ekspresi reguler hampir merupakan kemampuan standar — RegExp JavaScript, modul re Python, java.util.regex Java, kelas Regex .NET, paket regexp Go semuanya menyediakan dukungan regex. Ekspresi reguler banyak digunakan dalam skenario seperti validasi formulir (email/nomor HP/KTP), pencarian dan penggantian teks (cari ganti editor), analisis log (ekstraksi log ERROR), web crawler (ekstraksi konten HTML), pembersihan data (ETL), pencocokan rute, filter input dan perlindungan keamanan (aturan WAF), dll.

Konsep inti ekspresi reguler meliputi: kelas karakter (\d digit, \w karakter kata, \s spasi), pengkuantitas (* nol atau lebih, + satu atau lebih, ? nol atau satu, {n,m} jumlah yang ditentukan), jangkar (^ awal, $ akhir, \b batas kata), grup ((...) grup penangkapan, (?:...) grup non-penangkapan, (?<name>...) grup bernama), cabang (|), himpunan karakter ([a-z)], lookaround ((?=...) lookahead positif, (?!) lookahead negatif), dll. Menguasai regex dapat sangat meningkatkan efisiensi pemrosesan teks, tetapi juga perlu memperhatikan pencegahan jebakan kinerja seperti ReDoS.

术语表

Regex / RegExp
Singkatan dari Regular Expression (Ekspresi Reguler), sintaks string yang mendeskripsikan pola pencocokan teks, digunakan untuk mencari, mengganti, memvalidasi teks.
Grup Penangkapan (Capture Group)
Ekspresi sub yang dibungkus tanda kurung (pattern), hasil pencocokan dapat direferensikan berdasarkan posisi melalui $1、$2.
Grup Bernama (Named Group)
Grup penangkapan yang didefinisikan dengan sintaks (?<name>pattern), dapat direferensikan berdasarkan nama melalui $<name>, lebih mudah dibaca daripada referensi angka.
ReDoS
Regular Expression Denial of Service (Penolakan layanan ekspresi reguler), disebabkan oleh backtracking bencana yang membuat waktu eksekusi regex meningkat secara eksponensial, membuat browser atau server hang.
Backtracking
Mekanisme mesin regex NFA yang mundur ke posisi sebelumnya untuk mencoba kemungkinan lain saat pencocokan gagal, regex kompleks dapat menyebabkan backtracking eksponensial.
Bendera (Flags)
Parameter yang mengubah perilaku pencocokan regex, umumnya ada g(global)、i(abaikan huruf besar/kecil)、m(multiline)、s(dotAll)、u(Unicode)、y(lengket).
Lookaround
Asersi lebar nol, termasuk lookahead positif (?=...), lookahead negatif (?!...), lookbehind positif (?<=...), lookbehind negatif (?<!...), hanya menentukan posisi tidak mengkonsumsi karakter.
PCRE
Perl Compatible Regular Expressions (Ekspresi reguler kompatibel Perl), standar sintaks regex yang banyak digunakan, diadopsi oleh sebagian besar bahasa seperti PHP、Java、Python.
Web Worker
API thread latar belakang yang disediakan browser yang terpisah dari thread utama, alat ini menggunakannya untuk mengeksekusi regex di Worker, bahkan jika ReDoS terjadi tidak memblokir UI.
Pengkuantitas (Quantifier)
Sintaks yang menentukan jumlah pengulangan elemen sebelumnya: *(0 atau lebih)、+(1 atau lebih)、?(0 atau 1)、{n}(tepat n kali)、{n,m}(n sampai m kali).

Tabel referensi cepat karakter meta regex umum

Karakter MetaArtiPenjelasan Contoh
.Karakter tunggal apa pun (tidak termasuk baris baru, di bawah bendera s termasuk baris baru)a.c cocok abc、aXc, tidak cocok a\nc
\dKarakter digit, setara dengan [0-9]\d{3} cocok 123、456
\wKarakter kata, setara dengan [A-Za-z0-9_]\w+ cocok hello_123
\sKarakter spasi (spasi/tab/baris baru, dll.)a\sb cocok a b (spasi di tengah)
^Awal string (di bawah bendera m adalah awal baris)^Hello cocok Hello di awal baris
$Akhir string (di bawah bendera m adalah akhir baris)end$ cocok end di akhir baris
\bBatas kata\bcat\b cocok kata cat yang berdiri sendiri, tidak cocok category
*Elemen sebelumnya berulang 0 kali atau lebih (rakus)ab*c cocok ac、abc、abbc
+Elemen sebelumnya berulang 1 kali atau lebihab+c cocok abc、abbc, tidak cocok ac
?Elemen sebelumnya 0 kali atau 1 kali (atau digunakan untuk tidak rakus/lookaround)colou?r cocok color dan colour
|Cabang/atau, cocok kiri atau kanancat|dog cocok cat atau dog
[...]Himpunan karakter, cocok salah satu karakter di dalamnya[aeiou] cocok salah satu vokal

Template referensi cepat ekspresi reguler umum

KegunaanEkspresi RegulerBendera Rekomendasi
Alamat email[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}g
Nomor HP Tiongkok Daratan1[3-9]\d{9}g
Tautan URLhttps?:\/\/[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b[-a-zA-Z0-9()@:%_+.~#?&/=]*gi
Alamat IPv4\b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\bg
Tanggal YYYY-MM-DD\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])g
Nomor KTP (18 digit)[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dXx]g
UUID[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}gi

Code Examples

Pencocokan dan penggantian regex di JavaScript

// Validasi format email
const emailRe = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRe.test('user@example.com')); // true

// Ekstraksi grup bernama (parsing tanggal)
const dateRe = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g;
const text = 'Waktu rapat:2026-03-12,Batas:2026-04-01';
const matches = [...text.matchAll(dateRe)];
for (const m of matches) {
  console.log(m.groups.year, m.groups.month, m.groups.day);
}

// Penggantian:konversi format tanggal YYYY-MM-DD → MM/DD/YYYY
const reformatted = text.replace(dateRe, '$<month>/$<day>/$<year>');
console.log(reformatted);
// Waktu rapat:03/12/2026,Batas:04/01/2026

Menggunakan modul re di Python

import re

# Cari semua hasil pencocokan
text = 'Kontak:alice@example.com,bob@test.org'
emails = re.findall(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', text)
print(emails)  # ['alice@example.com', 'bob@test.org']

# Ekstraksi grup bernama (Python menggunakan sintaks ?P<name>)
date_pattern = r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})'
m = re.search(date_pattern, 'Diterbitkan pada 2026-03-12')
if m:
    print(m.group('year'), m.group('month'), m.group('day'))

# Penggantian:penyamaran 4 digit tengah nomor HP
phone_re = r'(1[3-9]\d)\d{4}(\d{4})'
result = re.sub(phone_re, r'\1****\2', 'Nomor HP:13812345678')
print(result)  # Nomor HP:138****5678

Menggunakan java.util.regex di Java

import java.util.regex.*;

class RegexDemo {
    public static void main(String[] args) {
        String text = "Error [2026-03-12 18:05:09] Connection failed";

        // Kompilasi regex (lingkungan produksi sebaiknya cache instance Pattern)
        Pattern p = Pattern.compile(
            "(?<level>INFO|WARN|ERROR)\\s+\\[(?<time>[^\\]]+)\\]\\s+(?<message>.+)"
        );
        Matcher m = p.matcher(text);

        if (m.find()) {
            System.out.println("Tingkat: " + m.group("level"));
            System.out.println("Waktu: " + m.group("time"));
            System.out.println("Pesan: " + m.group("message"));
        }

        // Ganti semua digit
        String cleaned = "abc123def456".replaceAll("\\d+", "*");
        System.out.println(cleaned); // abc*def*
    }
}

Authoritative References