Menggabungkan pola regex dengan variabel javascript? Hampir tidak mungkin!
Iya, tidak mungkin menggabungkan pola regex dan variabel javascript jika kita hanya menggunakan fungsi semisal match() atau search() dll..
Di javascript, kita tidak bisa seenaknya saja menggabungkan pola regex dengan variabel. Karena semua string yg terdapat di dalam modifier akan di anggap sebagai pattern, tanpa mengenal entah itu variabel ataupun objek.
Misal kita punya script seperti ini.
<script type="text/javascript>
var str1= 'queryString';
var str2= 'query';
if(str1.match(/^'+str2+'String$/)) {
document.write('cocok'); }
else {
document.write('tidak cocok'); }
</script>
Hasil dari script di atas akan mencetak di layar browser dengan hasil 'tidak cocok'. Kok bisa? Seperti yg telah kita ketahui bahwa di regex juga terdapat karakter meta '+' (plus) yg artinya untuk mengulang karakter di depannya minimal satu atau lebih.
Jadi jika kita menulis pola seperti ini /^'+str1+'String$/ maka artinya sebagai berikut: String harus di awali dengan tanda petik, dan harus ada minimal satu karakter. Kemudian di gabungkan dgn 'str2', coba perhatikan di belakang 'str2' terdapat 'plus' lagi, maka angka '2' harus ada minimal satu karakter. Dilanjutkan dengan tanda petik dan harus di akhiri dengan kata 'String'.
Pola tersebut akan lebih cocok dengan string misal seperti ini: ('''str22'String)
Begitulah kira-kira ceritanya. Nah, supaya variabel yg kita gabungkan tidak di anggap sebagi pattern maka kita membutuhkan sebuah fungsi yg dapat menangani masalah ini. Fungsi tersebut bernama new RegExp()
new RegExp() adalah sebuah fungsi dari javascript yg bertujuan untuk mempermudah kita dalam merangkai pattern. Jika kita memakai new RegExp(), tidak perlu lagi menuliskan slash '/' di awal dan akhir pattern, tentu ini adalah keuntungan tersendiri buat kita karena tidak perlu lagi meng-escape tanda slash '/' sebelum akhir pola yg terkadang malah membuat bingung sendiri.
Lantas bagaimana jika ingin menambahkan modifier di dalamnya? Justru dengan penggunaan new RegExp() ini modifier akan di pisahkan sendiri dan bersifat opsional (seperti layaknya pada fungsi javascript biasa). Nah, daripada pusing membaca tulisan Admin yg makin gak jelas ini mari kita simak contoh fungsi berikut ini.
<script type="text/javascript">
function getQuery(query) {
var queryString= window.location.search;
var regex= new RegExp(query+'=([^&]+)', 'i');
var matches= queryString.match(regex);
return (matches) ? matches[1]: ''; }
</script>
Misalkan kita ingin mengambil sebuah value yg ada di URL, tinggal kita panggil aja fungsi di atas. Contoh seperti ini:
document.write(getQuery('q'));
Oh iya hampir lupa, jika menggunaka new RegExp() kita harus meng-escape meta karakter dua kali. Misal: new RegExp('\ \d+') tapi tidak pakai spasi yaa.
Demikian tadi sedikit penjelasan tentang Cara menggabungkan pola RegEx dengan variabel Javascript beserta fungsi yg berkaitan dengan penggabungan pola regex dan variabel javascript.
Jika Anda memiliki pertanyaan seputar artikel ini jangan sungkan-sungkan untuk menggoreskan tinta hitam Anda di kolom komentar.