Regular Expression (regex) adalah sebuah notasi yang digunakan untuk memrepresentasikan pola-pola tertentu dalam string. Regex sering digunakan untuk mencari, mengganti, atau memvalidasi string yang memenuhi pola tertentu. Regex banyak digunakan dalam berbagai bahasa pemrograman, aplikasi web, dan tools lainnya. Contoh penggunaan regex yang umum adalah validasi input form, pencarian teks dalam file, dan pemfilteran string sesuai dengan pola tertentu.
Ada beberapa regex yang sering digunakan oleh programmer "malas" (dalam hal ini, "malas" mungkin berarti sibuk atau tidak ingin terlalu banyak memikirkan logika pemrograman yang terkait dengan parsing string). Berikut adalah beberapa contoh yang mungkin berguna:
Digit:
\d
Huruf kecil:
[a-z]
Huruf besar:
[A-Z]
Angka atau huruf:
[a-zA-Z0-9]
Spasi:
\s
Semua karakter kecuali spasi:
\S
Karakter apa saja yang terdapat dalam kurung:
[...]
Digit
Untuk mencari pola digit (angka) dalam string menggunakan regex di JavaScript, kita bisa menggunakan karakter khusus \d.
Menggunakan RegExp object:
const regex = new RegExp('\\d');
console.log(regex.test('123')); // true
console.log(regex.test('abc')); // false
Menggunakan String.prototype.match():
console.log('123'.match(/\d/)); // ['1']
console.log('abc'.match(/\d/)); // null
Menggunakan String.prototype.search():
console.log('123'.search(/\d/)); // 0
console.log('abc'.search(/\d/)); // -1
Menggunakan String.prototype.replace():
console.log('123'.replace(/\d/g, 'x')); // xxx
console.log('abc'.replace(/\d/g, 'x')); // abc
Menggunakan RegExp.prototype.exec():
const regex = /\d/;
console.log(regex.exec('123')); // ['1']
console.log(regex.exec('abc')); // null
Catatan: Karakter \d
merupakan shorthand untuk mencari digit dalam regex. g
merupakan flag yang menandakan bahwa regex harus mencari semua pola yang sesuai, bukan hanya pola pertama yang ditemukan.
Huruf kecil
Berikut ini adalah contoh regex untuk mencari huruf kecil dalam string menggunakan JavaScript:
Menggunakan RegExp object:
const regex = new RegExp('[a-z]');
console.log(regex.test('abc')); // true
console.log(regex.test('ABC')); // false
Menggunakan String.prototype.match():
console.log('abc'.match(/[a-z]/)); // ['a']
console.log('ABC'.match(/[a-z]/)); // null
Menggunakan String.prototype.search():
console.log('abc'.search(/[a-z]/)); // 0
console.log('ABC'.search(/[a-z]/)); // -1
Menggunakan String.prototype.replace():
console.log('abc'.replace(/[a-z]/g, 'x')); // xxx
console.log('ABC'.replace(/[a-z]/g, 'x')); // ABC
Menggunakan RegExp.prototype.exec():
const regex = /[a-z]/;
console.log(regex.exec('abc')); // ['a']
console.log(regex.exec('ABC')); // null
Huruf besar (kapital)
Berikut ini adalah contoh regex untuk mencari huruf besar dalam string menggunakan JavaScript:
- Menggunakan RegExp object:
const regex = new RegExp('[A-Z]');
console.log(regex.test('ABC')); // true
console.log(regex.test('abc')); // false
Menggunakan String.prototype.match():
console.log('ABC'.match(/[A-Z]/)); // ['A']
console.log('abc'.match(/[A-Z]/)); // null
Menggunakan String.prototype.search():
console.log('ABC'.search(/[A-Z]/)); // 0
console.log('abc'.search(/[A-Z]/)); // -1
Menggunakan String.prototype.replace():
console.log('ABC'.replace(/[A-Z]/g, 'x')); // xxx
console.log('abc'.replace(/[A-Z]/g, 'x')); // abc
Menggunakan RegExp.prototype.exec():
const regex = /[A-Z]/;
console.log(regex.exec('ABC')); // ['A']
console.log(regex.exec('abc')); // null
Angka atau huruf
Berikut ini adalah contoh regex untuk mencari angka atau huruf dalam string menggunakan JavaScript:
Menggunakan RegExp object:
const regex = new RegExp('[a-zA-Z0-9]');
console.log(regex.test('123')); // true
console.log(regex.test('abc')); // true
console.log(regex.test('ABC')); // true
console.log(regex.test('!@#$')); // false
Menggunakan String.prototype.match():
console.log('123'.match(/[a-zA-Z0-9]/)); // ['1']
console.log('abc'.match(/[a-zA-Z0-9]/)); // ['a']
console.log('ABC'.match(/[a-zA-Z0-9]/)); // ['A']
console.log('!@#$'.match(/[a-zA-Z0-9]/)); // null
Menggunakan String.prototype.search():
console.log('123'.search(/[a-zA-Z0-9]/)); // 0
console.log('abc'.search(/[a-zA-Z0-9]/)); // 0
console.log('ABC'.search(/[a-zA-Z0-9]/)); // 0
console.log('!@#$'.search(/[a-zA-Z0-9]/)); // -1
Menggunakan String.prototype.replace():
console.log('123'.replace(/[a-zA-Z0-9]/g, 'x')); // xxx
console.log('abc'.replace(/[a-zA-Z0-9]/g, 'x')); // xxx
console.log('ABC'.replace(/[a-zA-Z0-9]/g, 'x')); // xxx
console.log('!@#$'.replace(/[a-zA-Z0-9]/g, 'x')); // !@#$
Menggunakan RegExp.prototype.exec():
const regex = /[a-zA-Z0-9]/;
console.log(regex.exec('123')); // ['1']
console.log(regex.exec('abc')); // ['a']
console.log(regex.exec('ABC')); // ['A']
console.log(regex.exec('!@#$')); // null
Spasi
Berikut ini adalah contoh regex untuk mencari spasi dalam string menggunakan JavaScript:
Menggunakan RegExp object:
const regex = new RegExp('\\s');
console.log(regex.test(' ')); // true
console.log(regex.test('abc')); // false
Menggunakan String.prototype.match():
console.log(' '.match(/\s/)); // [' ']
console.log('abc'.match(/\s/)); // null
Menggunakan String.prototype.search():
console.log(' '.search(/\s/)); // 0
console.log('abc'.search(/\s/)); // -1
Menggunakan String.prototype.replace():
console.log(' '.replace(/\s/g, 'x')); // xxx
console.log('abc'.replace(/\s/g, 'x')); // abc
Menggunakan RegExp.prototype.exec():
const regex = /\s/;
console.log(regex.exec(' ')); // [' ']
console.log(regex.exec('abc')); // null
Semua karakter kecuali spasi
Berikut ini adalah contoh regex untuk mencari semua karakter kecuali spasi dalam string menggunakan JavaScript:
Menggunakan RegExp object:
const regex = new RegExp('[^\\s]');
console.log(regex.test('abc')); // true
console.log(regex.test(' ')); // false
Menggunakan String.prototype.match():
console.log('abc'.match(/[^\s]/)); // ['a']
console.log(' '.match(/[^\s]/)); // null
Menggunakan String.prototype.search():
console.log('abc'.search(/[^\s]/)); // 0
console.log(' '.search(/[^\s]/)); // -1
Menggunakan String.prototype.replace():
console.log('abc'.replace(/[^\s]/g, 'x')); // xxx
console.log(' '.replace(/[^\s]/g, 'x')); //
Menggunakan RegExp.prototype.exec():
const regex = /[^\s]/;
console.log(regex.exec('abc')); // ['a']
console.log(regex.exec(' ')); // null
Karakter apa saja yang didalam kurung
Berikut ini adalah contoh regex untuk mencari semua karakter yang terdapat dalam kurung dalam string menggunakan JavaScript:
Menggunakan RegExp object:
const regex = new RegExp('[(abc)]');
console.log(regex.test('a')); // true
console.log(regex.test('b')); // true
console.log(regex.test('c')); // true
console.log(regex.test('d')); // false
Menggunakan String.prototype.match():
console.log('a'.match(/[(abc)]/)); // ['a']
console.log('b'.match(/[(abc)]/)); // ['b']
console.log('c'.match(/[(abc)]/)); // ['c']
console.log('d'.match(/[(abc)]/)); // null
Menggunakan String.prototype.search():
console.log('a'.search(/[(abc)]/)); // 0
console.log('b'.search(/[(abc)]/)); // 0
console.log('c'.search(/[(abc)]/)); // 0
console.log('d'.search(/[(abc)]/)); // -1
Menggunakan String.prototype.replace():
console.log('a'.replace(/[(abc)]/g, 'x')); // x
console.log('b'.replace(/[(abc)]/g, 'x')); // x
console.log('c'.replace(/[(abc)]/g, 'x')); // x
console.log('d'.replace(/[(abc)]/g, 'x')); // d
Menggunakan RegExp.prototype.exec():
const regex = /[(abc)]/;
console.log(regex.exec('a')); // ['a']
console.log(regex.exec('b')); // ['b']
console.log(regex.exec('c')); // ['c']
console.log(regex.exec('d')); // null
Contoh regex untuk validasi
const regex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
console.log(regex.test('user@example.com')); // true
console.log(regex.test('user@example')); // false
URL
const regex = /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,3}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:[/?#]\S*)?$/;
console.log(regex.test('https://www.example.com')); // true
console.log(regex.test('http://example.com')); // true
console.log(regex.test('ftp://www.example.com')); // true
console.log(regex.test('www.example.com')); // false
console.log(regex.test('example.com')); // false
KTP (NIK Indonesia) 🇮🇩
const regex = /^\d{16}$/;
console.log(regex.test('1234567890123456')); // true
console.log(regex.test('123456789012345')); // false (panjang kurang)
console.log(regex.test('12345678901234567')); // false (panjang lebih)
console.log(regex.test('123456789012345a')); // false (ada huruf)
Nomor Handphone Indonesia +62 atau 62 atau 08
const regex = /^(62|\+62|08)\d{6,12}$/;
console.log(regex.test('62123456')); // true
console.log(regex.test('+62123456789012')); // true
console.log(regex.test('0812345')); // false (panjang kurang)
console.log(regex.test('081234567890123')); // false (panjang lebih)
console.log(regex.test('012345a')); // false (tidak diawali dengan 62, +62, atau 08)
NPWP atau Nomor Pokok Wajib Pajak 🇮🇩
const regex = /^[0-9]{2}\.?[0-9]{3}\.?[0-9]{3}\.?[0-9]{1}-?[0-9]{3}\.?[0-9]{3}$/;
console.log(regex.test('12.123.123.1-123.123')); // true
console.log(regex.test('12123123123123123')); // true
console.log(regex.test('12.123.123.123123123')); // false (panjang salah)
console.log(regex.test('12.123.123.1-123.1234')); // false (panjang salah)
console.log(regex.test('12.123.123.a-123.123')); // false (ada huruf)
Warna dengan hexacolor
const regex = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;
console.log(regex.test('#000000')); // true
console.log(regex.test('#FFF')); // true
console.log(regex.test('#123456')); // true
console.log(regex.test('#ABC')); // true
console.log(regex.test('000000')); // true
console.log(regex.test('#12345')); // false (panjang salah)
console.log(regex.test('#1234567')); // false (panjang salah)
console.log(regex.test('#12345g')); // false (ada huruf yang tidak sesuai)
Itu saja mungkin yang sering dipakai untuk penggunaan regex dalam kehidupan sehari-hari si programmer yang anti anti ribet. Jika ada yang lain mohon tinggalkan dikomentar. Terimakasih, semoga membantu ❤️