# Regex untuk si paling anti ribet

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:

1. Digit: `\d`
    
2. Huruf kecil: `[a-z]`
    
3. Huruf besar: `[A-Z]`
    
4. Angka atau huruf: `[a-zA-Z0-9]`
    
5. Spasi: `\s`
    
6. Semua karakter kecuali spasi: `\S`
    
7. 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:

```javascript
const regex = new RegExp('\\d');
console.log(regex.test('123'));  // true
console.log(regex.test('abc'));  // false
```

Menggunakan String.prototype.match():

```javascript
console.log('123'.match(/\d/));  // ['1']
console.log('abc'.match(/\d/));  // null
```

Menggunakan String.prototype.search():

```javascript
console.log('123'.search(/\d/));  // 0
console.log('abc'.search(/\d/));  // -1
```

Menggunakan String.prototype.replace():

```javascript
console.log('123'.replace(/\d/g, 'x'));  // xxx
console.log('abc'.replace(/\d/g, 'x'));  // abc
```

Menggunakan RegExp.prototype.exec():

```javascript
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:

```javascript
const regex = new RegExp('[a-z]');
console.log(regex.test('abc'));  // true
console.log(regex.test('ABC'));  // false
```

Menggunakan String.prototype.match():

```javascript
console.log('abc'.match(/[a-z]/));  // ['a']
console.log('ABC'.match(/[a-z]/));  // null
```

Menggunakan String.prototype.search():

```javascript
console.log('abc'.search(/[a-z]/));  // 0
console.log('ABC'.search(/[a-z]/));  // -1
```

Menggunakan String.prototype.replace():

```javascript
console.log('abc'.replace(/[a-z]/g, 'x'));  // xxx
console.log('ABC'.replace(/[a-z]/g, 'x'));  // ABC
```

Menggunakan RegExp.prototype.exec():

```javascript
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:

1. Menggunakan RegExp object:
    

```javascript
const regex = new RegExp('[A-Z]');
console.log(regex.test('ABC'));  // true
console.log(regex.test('abc'));  // false
```

Menggunakan String.prototype.match():

```javascript
console.log('ABC'.match(/[A-Z]/));  // ['A']
console.log('abc'.match(/[A-Z]/));  // null
```

Menggunakan String.prototype.search():

```javascript
console.log('ABC'.search(/[A-Z]/));  // 0
console.log('abc'.search(/[A-Z]/));  // -1
```

Menggunakan String.prototype.replace():

```javascript
console.log('ABC'.replace(/[A-Z]/g, 'x'));  // xxx
console.log('abc'.replace(/[A-Z]/g, 'x'));  // abc
```

Menggunakan RegExp.prototype.exec():

```javascript
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:

```javascript
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():

```javascript
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():

```javascript
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():

```javascript
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():

```javascript
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:

```javascript
const regex = new RegExp('\\s');
console.log(regex.test('   '));  // true
console.log(regex.test('abc'));  // false
```

Menggunakan String.prototype.match():

```javascript
console.log('   '.match(/\s/));  // [' ']
console.log('abc'.match(/\s/));  // null
```

Menggunakan String.prototype.search():

```javascript
console.log('   '.search(/\s/));  // 0
console.log('abc'.search(/\s/));  // -1
```

Menggunakan String.prototype.replace():

```javascript
console.log('   '.replace(/\s/g, 'x'));  // xxx
console.log('abc'.replace(/\s/g, 'x'));  // abc
```

Menggunakan RegExp.prototype.exec():

```javascript
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:

```javascript
const regex = new RegExp('[^\\s]');
console.log(regex.test('abc'));  // true
console.log(regex.test('   '));  // false
```

Menggunakan String.prototype.match():

```javascript
console.log('abc'.match(/[^\s]/));  // ['a']
console.log('   '.match(/[^\s]/));  // null
```

Menggunakan String.prototype.search():

```javascript
console.log('abc'.search(/[^\s]/));  // 0
console.log('   '.search(/[^\s]/));  // -1
```

Menggunakan String.prototype.replace():

```javascript
console.log('abc'.replace(/[^\s]/g, 'x'));  // xxx
console.log('   '.replace(/[^\s]/g, 'x'));  //    
```

Menggunakan RegExp.prototype.exec():

```javascript
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:

```javascript
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():

```javascript
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():

```javascript
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():

```javascript
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():

```javascript
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

Email

```javascript
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

```javascript
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) 🇮🇩

```javascript
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

```javascript
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 🇮🇩

```javascript
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

```javascript
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 ❤️
