Latihan 1: ReDoS & Catastrophic Backtracking — Regex
Latihan 1 dari materi ReDoS & Catastrophic Backtracking di Regex — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Pola /^(\w+)+\.(\w+)+$/ memeriksa nama file berbentuk nama.ext, tapi rawan ReDoS: (\w+)+ adalah quantifier di dalam quantifier, dan dia muncul dua kali.
Di function safePattern(), ganti return /.../; dengan versi aman pola itu. Dia tetap menerima nama.ext: huruf, angka, atau garis bawah, lalu satu titik, lalu huruf, angka, atau garis bawah. Nama yang ada spasinya ditolak.
safePattern() me-return regex-nya, bukan hasil test().
Dua console.log di starter memanggil safePattern().test(...); biarkan. Output yang diharapkan, baris per baris:
true
false
Baris pertama dari 'hello.txt', baris kedua dari 'hello world.txt'. Yang juga dicek: safePattern().test("a_b.c") memberi true dan safePattern().test("no dot here") memberi false.
Hint
Pola rawan karena satu bagian teks bisa dicocokkan dengan banyak cara: (\w+)+ bisa memotong hello jadi hello, hell lalu o, he lalu llo, dan seterusnya. Buat tiap huruf cuma punya satu cara dicocokkan.
(\w+)+ dan \w+ menerima teks yang sama persis, tapi \w+ gak punya pembungkus yang diulang. Ganti kedua (\w+)+ dengan \w+, dan biarkan ^, titik yang di-escape (\.), dan $ di tempatnya.
function safePattern() { return /^\w+\.\w+$/; } lalu biarkan dua console.log di starter.
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...