TS Config #
Berikut adalah penjelasan mengenai berbagai identifier dalam regex (regular expressions) di TypeScript, disertai dengan contoh penggunaannya:
Karakter Literal #
Karakter literal adalah karakter yang cocok dengan dirinya sendiri.
Contoh:
let regex = /abc/;
console.log(regex.test("abc")); // Output: true
console.log(regex.test("def")); // Output: false
- Pola
abc
akan cocok dengan string “abc” dan tidak akan cocok dengan string lain.
Metakarakter #
Metakarakter memiliki makna khusus dalam regex.
-
.
(Titik): Mencocokkan sembarang karakter tunggal kecuali baris baru.let regex = /a.b/; console.log(regex.test("acb")); // Output: true console.log(regex.test("aab")); // Output: true console.log(regex.test("ab")); // Output: false
-
^
(Caret): Mencocokkan awal dari string.let regex = /^hello/; console.log(regex.test("hello world")); // Output: true console.log(regex.test("world hello")); // Output: false
-
$
(Dollar Sign): Mencocokkan akhir dari string.let regex = /world$/; console.log(regex.test("hello world")); // Output: true console.log(regex.test("world hello")); // Output: false
-
\
(Backslash): Digunakan untuk menghindari makna khusus dari metakarakter.let regex = /a\.b/; console.log(regex.test("a.b")); // Output: true console.log(regex.test("acb")); // Output: false
Karakter Kelas (Character Classes) #
Karakter kelas memungkinkan Anda untuk mencocokkan salah satu dari sekumpulan karakter.
-
[...]
: Mencocokkan satu karakter dalam tanda kurung.let regex = /[abc]/; console.log(regex.test("a")); // Output: true console.log(regex.test("d")); // Output: false
-
[^...]
: Mencocokkan satu karakter yang tidak ada dalam tanda kurung.let regex = /[^abc]/; console.log(regex.test("d")); // Output: true console.log(regex.test("a")); // Output: false
Predefined Character Classes #
Kelas karakter yang telah ditentukan sebelumnya digunakan untuk mencocokkan sekumpulan karakter umum.
-
\d
: Mencocokkan digit (angka).let regex = /\d/; console.log(regex.test("123")); // Output: true console.log(regex.test("abc")); // Output: false
-
\D
: Mencocokkan non-digit (bukan angka).let regex = /\D/; console.log(regex.test("abc")); // Output: true console.log(regex.test("123")); // Output: false
-
\w
: Mencocokkan karakter alfanumerik atau underscore.let regex = /\w/; console.log(regex.test("hello")); // Output: true console.log(regex.test("@#$")); // Output: false
-
\W
: Mencocokkan non-alfanumerik.let regex = /\W/; console.log(regex.test("@#$")); // Output: true console.log(regex.test("hello")); // Output: false
-
\s
: Mencocokkan spasi putih (whitespace).let regex = /\s/; console.log(regex.test(" ")); // Output: true console.log(regex.test("a")); // Output: false
-
\S
: Mencocokkan non-spasi putih.let regex = /\S/; console.log(regex.test("a")); // Output: true console.log(regex.test(" ")); // Output: false
Quantifiers #
Quantifiers menentukan berapa kali suatu elemen dalam regex harus muncul agar cocok.
-
*
: Mencocokkan 0 atau lebih kemunculan dari elemen sebelumnya.let regex = /a*/; console.log(regex.test("aaa")); // Output: true console.log(regex.test("")); // Output: true
-
+
: Mencocokkan 1 atau lebih kemunculan dari elemen sebelumnya.let regex = /a+/; console.log(regex.test("aaa")); // Output: true console.log(regex.test("")); // Output: false
-
?
: Mencocokkan 0 atau 1 kemunculan dari elemen sebelumnya.let regex = /a?/; console.log(regex.test("a")); // Output: true console.log(regex.test("")); // Output: true
-
{n}
: Mencocokkan tepatn
kemunculan dari elemen sebelumnya.let regex = /a{3}/; console.log(regex.test("aaa")); // Output: true console.log(regex.test("aa")); // Output: false
-
{n,}
: Mencocokkann
atau lebih kemunculan dari elemen sebelumnya.let regex = /a{2,}/; console.log(regex.test("aa")); // Output: true console.log(regex.test("a")); // Output: false
-
{n,m}
: Mencocokkan antaran
danm
kemunculan dari elemen sebelumnya.let regex = /a{2,4}/; console.log(regex.test("aa")); // Output: true console.log(regex.test("aaaa")); // Output: true console.log(regex.test("a")); // Output: false
Grouping and Capturing #
Grouping digunakan untuk mengelompokkan beberapa elemen menjadi satu unit dan menangkap bagian dari string yang cocok.
-
(...)
: Mengelompokkan elemen menjadi satu dan menangkap kecocokan.let regex = /(abc)+/; console.log(regex.test("abcabc")); // Output: true console.log(regex.test("ab")); // Output: false
-
(?:...)
: Mengelompokkan elemen tanpa menangkap kecocokan (non-capturing group).let regex = /(?:abc)+/; console.log(regex.test("abcabc")); // Output: true console.log(regex.test("ab")); // Output: false
Alternation #
Alternation menggunakan |
untuk mencocokkan salah satu dari beberapa pola.
-
|
: Mencocokkan salah satu dari pola yang dipisahkan oleh|
.let regex = /abc|def/; console.log(regex.test("abc")); // Output: true console.log(regex.test("def")); // Output: true console.log(regex.test("ghi")); // Output: false
Assertions #
Assertions adalah pola khusus yang mencocokkan posisi dalam string, bukan karakter.
-
^
: Mencocokkan awal string atau awal baris dalam mode multiline.let regex = /^abc/; console.log(regex.test("abc def")); // Output: true console.log(regex.test("def abc")); // Output: false
-
$
: Mencocokkan akhir string atau akhir baris dalam mode multiline.let regex = /abc$/; console.log(regex.test("def abc")); // Output: true console.log(regex.test("abc def")); // Output: false
-
\b
: Mencocokkan batas kata.let regex = /\bword\b/; console.log(regex.test("word")); // Output: true console.log(regex.test("swordplay"));// Output: false
-
\B
: Mencocokkan bukan batas kata.let regex = /\Bword\B/; console.log(regex.test("swordplay")); // Output: true console.log(regex.test("word")); // Output: false
Lookahead dan Lookbehind #
Lookahead dan lookbehind digunakan untuk mencocokkan pola yang didahului atau diikuti oleh pola lain tanpa menyertakan pola tersebut dalam hasil kecocokan.
-
Positive Lookahead (
(?=...)
): Mencocokkan jika pola berikutnya cocok, tanpa menangkap pola tersebut.let regex = /\d+(?=px)/; console.log(regex.test("100px")); // Output: true console.log(regex.test("100pt")); // Output: false let match = "100px".match(regex); console.log(match[0]); // Output: 100
Di sini,
\d+(?=px)
mencocokkan angka yang diikuti oleh “px”, tetapi “px” tidak termasuk dalam hasil kecocokan. -
Negative Lookahead (
(?!...)
): Mencocokkan jika pola berikutnya tidak cocok.let regex = /\d+(?!px)/; console.log(regex.test("100pt")); // Output: true console.log(regex.test("100px")); // Output: false let match = "100pt".match(regex); console.log(match[0]); // Output: 100
Di sini,
\d+(?!px)
mencocokkan angka yang tidak diikuti oleh “px”. -
Positive Lookbehind (
(?<=...)
): Mencocokkan jika pola sebelumnya cocok, tanpa menangkap pola tersebut.let regex = /(?<=\$)\d+/; console.log(regex.test("$100")); // Output: true console.log(regex.test("100")); // Output: false let match = "$100".match(regex); console.log(match[0]); // Output: 100
Di sini,
(?<=\$)\d+
mencocokkan angka yang didahului oleh tanda “$”, tetapi “$” tidak termasuk dalam hasil kecocokan. -
Negative Lookbehind (
(?<!...)
): Mencocokkan jika pola sebelumnya tidak cocok.let regex = /(?<!\$)\d+/; console.log(regex.test("100")); // Output: true console.log(regex.test("$100")); // Output: false let match = "100".match(regex); console.log(match[0]); // Output: 100
Di sini,
(?<!\$)\d+
mencocokkan angka yang tidak didahului oleh tanda “$”.
Escape Characters #
Untuk mencocokkan karakter yang merupakan metakarakter (seperti .
, *
, ?
, dll.), Anda harus menggunakan backslash \
untuk menghindarinya.
Contoh:
let regex = /\./;
console.log(regex.test("example.com")); // Output: true
console.log(regex.test("examplecom")); // Output: false
Di sini, \.
digunakan untuk mencocokkan karakter titik (.
) secara literal.
Kesimpulan #
Dengan memahami dan menggunakan berbagai identifier dalam regex, Anda dapat membuat pola pencarian yang sangat spesifik dan kuat untuk memanipulasi teks di TypeScript. Regular expressions memberikan fleksibilitas yang luar biasa untuk pencocokan pola, validasi, dan penggantian teks, menjadikannya alat yang sangat berguna dalam pemrograman.