Membuat Regex Pattern Untuk IP Address

26 03 2009

Ok temen-temen, sebelumya kita sudah mengenal apa itu Regex (Regular Expressions) dan seperti apa bentuknya, metakarekternya, serta kelas karakternya.. nah sekarang kita akan melanjutkan tentang Regex kemarin yaitu bagaimana caranya membuat Regex Pattern untuk sebuah IP Address pada IPV4.

Lho koq bukan validasi input dengan Regex di VB kaya yang dah dikatakan kemaren..hehehe

Sebelum kesana saya rasa kita perlu memahami lebih dalam terlebih dahulu tentang Regex dan sudah mahir bagaimana cara membuat Regex Pattern, karena jika hal ini sudah bisa maka akan sangat mudah mengaplikasikannya di Visual Basic.

Ok, saya anggap teman-teman sudah membaca postingan saya sebelumnya, jika belum silahkan baca terlebih dahulu karena untuk membuat sebuahRegex Pattern paling tidak kita sudah memahami dasar-dasar Regex.

IP Address pada setiap komputer pastinya memiliki format yang sama yaitu berbentuk bilangan biner 32 bit yang dibatasi oleh tanda dot(.) pada setiap 8 bitnya. tapi untuk memudahkannya biasanya IP Address ditulis dalam 4 bilangan desimal yang dipisahkan dengan tanda dot(.).

Contohnya : 192.168.000.100

Nah sekarang bagaimana caranya kita membuat Regex Pattern untuk alamat ip tersebut?

Ok, sebelumnya kita buat asumsi bahwa IP adress yang valid adalah 000.000.000.000 sampai 255.255.255.255, selain itu IP Address tidak valid.

Langkah pertama kita mulai dengan membuat patter 3 angka awal karena format 9 angka selanjutnya sama dengan 3 angka awal jadi kita hanya perlu membuat satu pattern yang akan di gunakan di ke 9 angka selanjutnya.

1. Kita ambil 3 angka pertama = 000 sampai 255

untuk membuat patter untuk 3 angka tersebut pertama kita tentukan awal pattern ( “^”)  dan akhir pattern (“$”)  dan membatasi hanya angka  yang valid untuk IP ( [0-9]) dan angka boleh berjumlah 1,2 dan maksimal 3({1,2,3}) sehingga Regex Patternya menjadi sbb :

“^[0-9]{1,2,3}$

Pattern diatas sudah bisa menyeleksi 3 angka, akan tetapi masih mengijinkan angka di atas 255 masuk. untuk membatasinya maka pattern diatas perlu membuat beberapa pattern  yaitu :

“^[0-9]{1,2}$”    -> diijinkan angka 0-9 berjumlah 1 atau 2 angka (0-99)

“^(0)[0-9]{1,2}$”    -> diijinkan 3 angka yang diawali angka 0 dan diikuti 2 angka0-9  dibelakangnya (000-099)

“^(1)[0-9]{1,2}$”    -> diijinkan 3 angka yang diawali angka 1 dan diikuti 2 angka 0-9 dibelakangnya (100-199)

“^(2)[0-4]?[0-9]?$”)  -> diijinkan 3 angka yang diawali angka 2 dan diikuti 1 angka kedua antara 0-4 dan  1 angka ke 3 antara 0-9 (200 – 249)

“^(2)(5)[0-5]?$”   -> diijinkan 3 angka yang diawali angka 25 dan diikuti angka terakhir antara 0-5 (250 – 255)

2. Menggabungkan Pattern menjadi satu menjadi :

“^([0-9]{1,2}|(0)[0-9]{1,2}|(1)[0-9]{1,2}|(2)[0-4]?[0-9]?|(2)(5)[0-5]?)$”

dengan pattern di atas maka angka yang diijinkan adalah angka 0 – angka 255

tanda “|” menyatakan atau atau tanda operator logika OR, tanda-tanda yang lain bisa dilihat di postingan sebelumnya.

3. Menggabungkan pattern menjadi pattern IP Adress dengan separator tanda dot(.) di antaranya dengan menambahkan pattern “\.” di antara patter yang telah digabungkan sehingga menjadi sebagai berikut:

“^([0-9]{1,2}|(0)[0-9]{1,2}|(1)[0-9]{1,2}|(2)[0-4]?[0-9]?|(2)(5)[0-5]?)\.([0-9]{1,2}|(0)[0-9]{1,2}|(1)[0-9]{1,2}|(2)[0-4]?[0-9]?|(2)(5)[0-5]?)\.([0-9]{1,2}|(0)[0-9]{1,2}|(1)[0-9]{1,2}|(2)[0-4]?[0-9]?|(2)(5)[0-5]?)\.([0-9]{1,2}|(0)[0-9]{1,2}|(1)[0-9]{1,2}|(2)[0-4]?[0-9]?|(2)(5)[0-5]?)$”

kok jadi ribet ya..hehehe

ok sampai disini kita sudah membuat pattern untuk IP Address dan hasilnya adalah hanya mengijinkan IP Address dengan format 1,2 atau 3 angka maupun gabungannya, misalnya sbb:

1.1.1.1 , 10.10.10.10 ,  192.168.000.001 , atau gabungan seperti : 192.168.0.1

Bagi teman-teman yang baru di Regex jangan khawatir, Regex itu Sebenarnya sangat mudah, di Regex juga berlaku pepatah “Banyak Jalan Menuju Roma” tinggal kita nyari jalan yang paling gampang dan dekat ja. Di Regex juga seperti itu jadi jika teman-teman bisa membuat Pattern yang lebih simple dan gampang kenapa ga, yang penting hasil akhirnya benar.

Ok, Sampai disini dulu posting kali ini silahkan di coba-coba lagi nyari pattern yang lebih simple dari yang bisa saya buat, dan klo ketemu mohon di kasih di komentar ya…hehehe. toh saya juga masih belajar, dan silahkan juga buat yang mau ngoreksi..


Actions

Information

One response

9 10 2010
coblongpamor

hallo…,

saya mempunyai format angka spt ini:
23.45.67.78×5, 234.345.546×56, 4356.6575,9090×67

saya ingin memisahkan angka-angka tersebut, sehingga didapat hasil sprti berikut:

23 x 5
45 x 5
67 x 5
78 x 5

234 x 56
345 x 56
546 x 56

4356 x 67
6575 x 67
9090 x 67

terima kasih.
salama…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: