Kunci jawaban 09 Latihan Regular Expression. Untuk regex, sering ada beberapa jawaban valid; punyamu boleh beda asal lolos semua tes.
9.1 Regexp Golf
verify(/ca[rt]/, ["my car", "bad cats"], ["camper", "high art"]);
verify(/pr?op/, ["pop culture", "mad props"], ["plop", "prrrop"]);
verify(/ferr(et|y|ari)/, ["ferret", "ferry", "ferrari"], ["ferrum", "transfer A"]);
verify(/ious(\P{L}|$)/u, ["how delicious", "spacious room"], ["ruinous", "consciousness"]);
verify(/\s[.,:;]/, ["bad punctuation ."], ["escape the dot"]);
verify(/\p{L}{7}/u, ["Siebentausenddreihundertzweiundzwanzig"], ["no", "three small words"]);
verify(/(^|\P{L})[^\P{L}e]+(\P{L}|$)/ui, ["red platypus", "wobbling nest"], ["earth bed", "bedrøvet abe", "BEET"]);Kenapa tiap pola:
[rt]= pilih r atau t di posisi terakhir.r?= huruf r opsional (pop/prop).- Awalan bersama
ferrlalu grup alternatif tiga akhiran. iousharus diikuti non-huruf atau ujung string, jadiconsciousness(huruf lanjut) gak lolos.\slalu himpunan tanda baca (titik di dalam[]gak perlu di-escape).- Tujuh huruf berturut = lebih dari enam.
[^\P{L}e]= “bukan (non-huruf atau e)” = huruf selain e; diapit non-huruf/ujung, dengan flagisupayaEbesar ikut ditolak.
→ Soal: 09 Latihan Regular Expression > 9.1 Regexp Golf
9.2 Gaya Kutip
let teks = "'I'm the cook,' he said, 'it's my job.'";
console.log(teks.replace(/(^|\P{L})'|'(\P{L}|$)/gu, '$1"$2'));
// → "I'm the cook," he said, "it's my job."Kenapa: kutip di I'm dan it's diapit huruf di kedua sisi, jadi gak cocok cabang mana pun dan dibiarkan. Kutip pembuka cocok cabang pertama (didahului awal string atau non-huruf, disimpan di $1), kutip penutup cocok cabang kedua (diikuti non-huruf atau akhir, di $2). Karakter pengapitnya dikembalikan lewat $1"$2 supaya gak ikut terhapus.
→ Soal: 09 Latihan Regular Expression > 9.2 Gaya Kutip
9.3 Angka Lagi
let angka = /^[+\-]?(\d+(\.\d*)?|\.\d+)([eE][+\-]?\d+)?$/;Kenapa: dibaca dari kiri — ^ awal; [+\-]? tanda opsional; grup mantissa dengan dua cabang: \d+(\.\d*)? menangani 1, 1.55, 5., sedangkan \.\d+ menangani .5; grup eksponen opsional [eE][+\-]?\d+; $ akhir. Karena kedua cabang mantissa mengharuskan minimal satu digit, titik sendirian (.) gagal — persis yang diminta.