Apa itu Regular Expression

Regular Expression, atau biasa disebut regex atau regexp, merupakan teknik untuk mencari sebuah pola secara efisien pada teks yang ada. Pola pencarian ini ditulis menggunakan format khusus yang dimengerti oleh regular expression parser.

Regular Expression berasal dari sistem UNIX, di mana sebuah program dirancang untuk membantu pengguna bekerja dengan string dan manipulasi teks. Dengan mengikuti beberapa aturan dasar, seseorang dapat membuat pola pencarian yang sangat kompleks.

Sebagai contoh, katakanlah teman-teman diberi tugas untuk memeriksa apakah email atau nomor telepon memiliki format yang benar. Menggunakan beberapa perintah sederhana, masalah ini dapat dengan mudah dipecahkan berkat Regular Expression. Sintaksnya tidak selalu tampak langsung pada awalnya, tetapi setelah teman-teman mempelajarinya, teman-teman akan menyadari bahwa teman-teman dapat melakukan pencarian yang cukup kompleks dengan mudah, hanya dengan mengetikkan beberapa karakter dan itu akan mendekati masalah dari perspektif yang berbeda.

Perl Regular Regular Expressions

PHP telah mengimplementasikan beberapa fungsi regex yang menggunakan mesin parsing yang berbeda. Ada dua pengurai utama pada PHP. Satu disebut POSIX dan yang lainnya PCRE (Perl Regular Regular Expression).

function prefix PHP untuk POSIX adalah ereg_Sejak dirilisnya PHP 5.3 mesin ini sudah usang, tetapi mari kita lihat mesin PCRE yang lebih optimal dan lebih cepat. Pada PHP setiap fungsi PCRE dimulai dengan preg_ seperti preg_match atau preg_replace. Teman-teman dapat membaca daftar fungsi secara lengkap di dokumentasi PHP.

Sintaks Dasar

Untuk dapat menggunakan Regular Expression, teman-teman tentu harus mempelajari sintaks. Sintaks ini terdiri dari serangkaian huruf, angka, titik, tanda hubung dan tanda-tanda khusus, yang dapat dikelompokkan secara bersama-sama menggunakan tanda kurung.

Pada PHP setiap pola Regular Expression didefinisikan sebagai string menggunakan format Perl. Pada Perl, pola Regular Expression ditulis antara garis miring, seperti /hello/. Pada PHP ini akan menjadi string, ‘/hello/’.

Berikut ini beberapa operator, blok dasar dari Regular Expression

OperatorDeskripsi
^Simbol circumflex menandai awal dari suatu pola, meskipun dalam beberapa kasus dapat dihilangkan
$Sama seperti dengan simbol circumflex, tanda dolar menandai akhir dari pola pencarian
.Periode cocok dengan setiap karakter tunggal
?Ini akan cocok dengan pola sebelumnya nol atau satu kali
+Ini akan cocok dengan pola sebelumnya satu atau lebih kali
*Ini akan cocok dengan pola sebelumnya nol atau lebih banyak kali
|Boolean ATAU
Cocok dengan berbagai elemen
()Grup elemen elemen yang berbeda bersama-sama
[]Ini digunakan untuk mencocokkan setiap karakter tunggal di antara tanda kurung siku
{min, maks}Ini digunakan untuk mencocokkan jumlah karakter yang tepat
\dCocok dengan semua digit tunggal
\DCocok dengan semua karakter non digit
\wCocok dengan semua karakter alfanumerik termasuk garis bawah (_)
\WCocok dengan semua karakter non-numerik kecuali karakter garis bawah
\sCocok dengan whitespace character

 

Sebagai tambahan pada bahasa pemrograman PHP, karakter forward slash dibypass dengan menggunakan simple slash \.

Contoh

‘/he\/llo/’

Agar teman-teman pahaman tentang bagaimana operator ini digunakan, mari kita lihat beberapa contoh dibawah ini:

ContohDeskripsi
‘/hello/’Ini akan cocok dengan kata hello
‘/^hello/’Ini akan cocok dengan hello di awal string. Dengan kemungkinan adalah hello atau helloworld, tetapi tidak untuk worldhello
‘/hello$/’Ini akan cocok dengan hello di akhir string.
‘/he.o/’Ini akan cocok dengan karakter apa pun antara he dan o. Dengan kemungkinan kecocokan adalah helo atau heyo, tetapi tidak hello
‘/he?llo/’Itu akan cocok dengan llo atau hello
‘/hello+/’Ini akan cocok dengan hello atau lebih banyak lagi. Misalnya hello atau hellohello
‘/he*llo/’Cocok dengan llo, hello atau hehello, tetapi tidak hellooo
‘/hello|world/’Itu akan cocok dengan kata hello atau world
‘/(A-Z)/’Karakter tanda hubung, pola ini akan cocok dengan setiap karakter huruf kapital dari A hingga Z. Contoh: A, B, C…
‘/[abc]/’Ini akan cocok dengan karakter tunggal ab atau c
‘/abc{1}/’Cocok dengan satu karakter c setelah karakter ab. Misalnya cocok dengan abc, tetapi tidak abcc
‘/abc{1,}/’Cocok dengan satu atau lebih karakter c setelah karakter ab. Misalnya cocok dengan abc atau abcc
‘/abc{2,4}/’Cocok antara dua dan empat karakter c setelah karakter ab. Misalnya cocok dengan abccabccc atau abcccc, tetapi tidak abc

 

Selain operator, ada yang namanya regular expression modifiers, yang secara global dapat mengubah perilaku dari pola pencarian. Untuk daftar lengkap regular expression modifiers bisa kunjungi dokumentasi online PHP.

Menggunakan Regex di PHP

Pada bahasa pemrograman PHP ada sembilan fungsi PCRE yang dapat kami gunakan. Berikut daftarnya:

  • preg_filter – melakukan pencarian regular expression dan menggantinya
  • preg_grep – mengembalikan entri array yang cocok dengan suatu pola
  • preg_last_error – mengembalikan kode kesalahan dari eksekusi regre PCRE terakhir
  • preg_match – melakukan kecocokan regular expression
  • preg_match_all – melakukan kecocokan regular expression global
  • preg_quote – mengutip karakter regular expression
  • preg_replace – melakukan pencarian regular expression dan menggantinya
  • preg_replace_callback – melakukan pencarian regular expression dan menggantinya menggunakan callback
  • preg_split – pisahkan string dengan regular expression

Dua fungsi yang paling umum digunakan adalah preg_match dan preg_replace

Fungsi Regex

Berikut adalah beberapa fungsi PHP menggunakan regular expression yang dapat teman-teman untuk kebutuhan validasi dan aktivitas lainnya.

Validasi email

Fungsi ini akan memvalidasi string alamat email yang diberikan untuk melihat apakah ia memiliki bentuk yang benar.

function validasi_email($email_address)
{
    if( !preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+
                     ([a-zA-Z0-9\._-]+)+$/", $email_address))
    {
        return false;
    }	
    return true;
}

Validasikan URL

function validasi_URL($url)
{
    return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?
                      (/.*)?$|i', $url);
}

Menghapus pengulangan kata.

Saya sering menemukan kata-kata berulang dalam sebuah teks, seperti ini ini. Fungsi praktis ini akan menghapus kata-kata rangkap tersebut.

function hapus_pengulangan_kata_kata($text)
{
    return preg_replace("/s(w+s)1/i", "$1", $text);
}

Validasi angka alfa, tanda hubung, garis bawah, dan spasi

function validasi_angka_dan_lainnya($text)
{
    return preg_match("/^[A-Za-z0-9_- ]+$/", $text);
}

Validasi kode ZIP (Kode POS)

function validate_zip($zip_code)
{
    return preg_match("/^([0-9]{5})(-[0-9]{4})?$/i",$zip_code);	
}