Lompati ke konten utama
Modul 1 · Pelajaran 4 dari 44/32 dalam kursus~10 min
Pelajaran modul (4/4)

Melarikan diri dari meta-karakter

Beberapa karakter dalam regex memiliki arti khusus: mereka dipanggil meta-karakter. Jika Anda ingin mencocokkan karakter literal (misalnya karakter nyata ., + asli, tanda kurung asli) Anda perlu mengawalinya dengan garis miring terbalik \, yang menghindari mereka.

Karakter meta yang perlu diingat ada dua belas:

Code
.  *  +  ?  ^  $  |  \  (  )  [  ]  {  }  /

(/ sebenarnya bukan karakter meta mesin, tetapi harus di-escape dalam notasi literal JavaScript /.../.)

Code
Pattern: \$\d+\.\d\d
Sample:  Prezzi: $9.99, $12.50, totale $22.49.
                 ^^^^^  ^^^^^^         ^^^^^^

Di sini kita keluar dari $ (jangkar akhir string) dan . (wildcard) untuk mencocokkan karakter literal dalam format harga "dolar + angka + titik + dua digit".

Garis miring terbalik ganda dalam string JS

Saat Anda menulis pola di dalam string JavaScript (seperti yang Anda lakukan di latihan) garis miring terbalik harus dua kali lipat. String JS '\\d' berisi dua karakter (\ dan d) dan merupakan pola regex \d.

JS
const re1 = /\d+/; // literal notation: a single backslash
const re2 = new RegExp('\\d+'); // string: double backslash

Editor kursus menunjukkan pola sudah didekodekan (Anda melihat satu pola \d); Anda tidak perlu menggandakan apa pun sendiri.

12 karakter meta khusus

Karakter dengan arti khusus di mesin tepatnya ada 12: \\\ ^ $ . | ? * + ( ) [ {. Jika Anda ingin mencocokkannya sebagai teks literal, Anda harus mengawalinya dengan garis miring terbalik. Di beberapa lingkungan (misalnya string JS non-mentah), Anda mungkin perlu menggandakan garis miring terbalik (\\\\).

Cobalah

Latihan#regex.m1.l4.e1
Upaya: 0Memuat…

Temukan setiap harga dalam format `$N.NN` (dolar, satu digit atau lebih, titik, dua digit). Ingatlah untuk menghindari `$` dan `.`.

Memuat editor…
Tunjukkan petunjuk

$ harus di-escape sebagai \\$, titik sebagai \\. - jika tidak, titik itu cocok dengan apa pun.

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#regex.m1.l4.e2
Upaya: 0Memuat…

Temukan setiap tanda tanya literal `?` dalam teks. `?` adalah karakter meta: harus di-escape.

Memuat editor…
Tunjukkan petunjuk

Tanpa jalan keluar,? akan menjadi pembilang (modul 2). Letakkan \\ di depannya.

Solusi tersedia setelah 3 upaya

Tantangan tambahan

Latihan#regex.m1.l4.e3
Upaya: 0Memuat…

Find all occurrences of `.tar.gz` in the text, ensuring that the dots are matched literally.

Memuat editor…
Tunjukkan petunjuk

Masukkan garis miring terbalik sebelum setiap titik untuk menghindarinya.

Solusi tersedia setelah 3 upaya