Latihan buat 09 Regular Expression. Konsep: himpunan karakter, pengulangan, grup, alternatif, batas, dan
replace. Jawaban di 09 Kunci Jawaban Regular Expression.
9.1 Regexp Golf
Tulis regex sekecil mungkin yang cocok dengan pola yang diminta dan hanya itu. Fungsi verify (di kode awal) menguji tiap regex terhadap contoh yang harus cocok dan yang harus tidak.
Pola yang harus dikenali:
cardancatpopdanpropferret,ferry, danferrari- Kata apa pun yang berakhiran
ious - Whitespace diikuti titik, koma, titik dua, atau titik koma
- Kata lebih dari enam huruf
- Kata tanpa huruf
e(atauE)
Kode awal:
verify(/.../, ["my car", "bad cats"], ["camper", "high art"]);
verify(/.../, ["pop culture", "mad props"], ["plop", "prrrop"]);
verify(/.../, ["ferret", "ferry", "ferrari"], ["ferrum", "transfer A"]);
verify(/.../, ["how delicious", "spacious room"], ["ruinous", "consciousness"]);
verify(/.../, ["bad punctuation ."], ["escape the dot"]);
verify(/.../, ["Siebentausenddreihundertzweiundzwanzig"], ["no", "three small words"]);
verify(/.../, ["red platypus", "wobbling nest"], ["earth bed", "bedrøvet abe", "BEET"]);
function verify(regexp, yes, no) {
if (regexp.source == "...") return;
for (let s of yes) if (!regexp.test(s)) console.log(`Gagal cocok '${s}'`);
for (let s of no) if (regexp.test(s)) console.log(`Tak diharapkan cocok '${s}'`);
}Petunjuk: pakai himpunan [rt], opsional r?, grup alternatif (et|y|ari), batas non-huruf \P{L}/awal-akhir, {7} untuk “lebih dari enam”, dan himpunan negasi untuk “tanpa e”. Lihat tabel di 09 Regular Expression > Tabel Ringkasan Sintaks.
→ Jawaban: 09 Kunci Jawaban Regular Expression > 9.1 Regexp Golf
9.2 Gaya Kutip
Kamu punya teks yang memakai kutip tunggal untuk dialog, tapi juga untuk kontraksi seperti aren't. Ganti hanya kutip dialog jadi kutip ganda, biarkan kutip kontraksi.
Kode awal:
let teks = "'I'm the cook,' he said, 'it's my job.'";
// ubah pemanggilan ini
console.log(teks.replace(/A/g, "B"));
// → "I'm the cook," he said, "it's my job."Petunjuk: bedanya, kutip dialog punya karakter non-huruf (atau ujung baris) di salah satu sisinya, sedangkan kutip kontraksi diapit huruf. Cocokkan kutip yang di kiri/kanannya non-huruf, bungkus sisi itu dalam grup, dan kembalikan lewat $1/$2 supaya karakternya gak hilang. Konsep di 09 Regular Expression > Method replace.
→ Jawaban: 09 Kunci Jawaban Regular Expression > 9.2 Gaya Kutip
9.3 Angka Lagi
Tulis regex yang cocok hanya dengan angka gaya JavaScript: boleh tanda +/- di depan, titik desimal, dan notasi eksponen (5e-3, 1E10) dengan tanda opsional. Boleh tanpa digit sebelum atau sesudah titik (.5, 5.), tapi titik sendirian tidak boleh.
Kode awal:
let angka = /^...$/;
for (let s of ["1", "-1", "+15", "1.55", ".5", "5.",
"1.3e2", "1E-4", "1e+12"]) {
if (!angka.test(s)) console.log(`Gagal cocok '${s}'`);
}
for (let s of ["1a", "+-1", "1.2.3", "1+1", "1e4.5",
".5.", "1f5", "."]) {
if (angka.test(s)) console.log(`Salah menerima '${s}'`);
}Petunjuk: jangan lupa \. untuk titik. Tanda opsional [+\-]?. Untuk mencocokkan 5. dan .5 tapi bukan ., pakai |: “satu digit+ opsional diikuti titik dan digit*” atau “titik diikuti digit+”. Bungkus dengan ^...$. Konsep di 09 Regular Expression > Batas dan Look-ahead.
→ Jawaban: 09 Kunci Jawaban Regular Expression > 9.3 Angka Lagi