Coba Cek Nomor Handphone Anda :
Validasi dasar regex dari inputan ini cukup fleksibel : bisa pakai +62, 62, 08xx, pakai spasi, pakai strip, dll, sesuai dengan penjelasan di artikel ini. Untuk mengubahnya jadi lebih strict, silahkan centang aturan/rule yang disediakan dibawah

     
Silahkan centang / rule dibawah ini, lalu cek ! :


Tips

Untuk mengubahnya jadi lebih strict, maka modifikasi saja regex yang dijelaskan di artikel dibawah sesuai dengan kebutuhan Anda. Jadikan sebagai latihan untuk mengecek pemahaman Anda terhadap pola regex tersebut. Yakinlah tidak sulit kok !


Penjelasan mengenai regex itu tersendiri ini bisa dilihat di Regex Pendahuluan

Validasi nomor handphone juga merupakan salah satu validasi umum di dunia pemrograman.

Apa acuan kita ?

Acuannya adalah Rekomendasi Standar penomoran telekomunikasi oleh ITU.T E.164.

Bagaimana standarnya itu ?

Coba kita lihat gambar dibawah ini :

alt text

Panjang nomor telepon itu maksimal 15 digit

misalnya : 62 81911111111

62 : kode Negara
81911111111 : Nomor signifikan nasional (lihat gambar diatas)

Didahului oleh 1-3 digit Kode Negara (Country Code/CC).

Untuk Indonesia, kode negara adalah 62. Sisanya yang maksimal13 digit diisi dengan kode/nomor yang ditentukan oleh Kementerian Komunikasi dan Informatika RI.

Regex nya untuk nomor handphone Indonesia adalah (pilih salah satu, penjelasannya di bagian bawah) :

  1. ^(\+62|62|0)8[1-9][0-9]{6,9}$
  2. ^(\+62|62)?[\s-]?0?8[1-9]{1}\d{1}[\s-]?\d{4}[\s-]?\d{2,5}$

Penjelasan


Pola nomor handphone Indonesia yang valid ?

Di artikel kali ini akan dibahas mengenai pola nomor telepon selular yang paling banyak dipakai.


~ Nomor telepon selular

Berikut kasus nomor telepon dari Indonesia :


*   (0)8137666666     --> valid
*   (0)8137666666666  --> valid
*   (0)81376666666666 --> tidak valid, lebih dari 13 karakter

Digit (0) adalah prefix nasional, yang direkomendasikan oleh ITU.T ketika melakukan panggilan untuk di dalam negeri. Tetapi 0 ini bukan merupakan bagian dari 15 digit angka yang menjadi standar penomoran telepon Internasional. Ini hanya berlaku di nasional Indonesia saja.

62 adalah prefix internasional dan 0 adalah prefix nasional. Pilih salah satu saja ketika melakukan panggilan telepon. Sehingga total panjang standar penomoran telepon selular tetap 15 angka (dengan 62 di depannya, dan 13 angka setelahnya), atau 14 angka (dengan 0 didepannya, dan 13 angka setelahnya) untuk panggilan langsung dari Indonesia.

Departemen Kominfo menetapkan untuk 13 angka setelahnya itu, telepon selular dikelompokkan dalam kelompok prefix dimulai dengan angka 8, yaitu : (0)81X, (0)82X, (0)83X, (0)84X, (0)85X, (0)86X, (0)87X, (0)88X, (0)89X


Pengalokasian 3 angka didepan itu ditetapkan oleh Dirjen Telekomunikasi Departemen Kominfo.

(0)80X tidak ada karena nomor berawalan 080X ini diperuntukkan untuk telepon bebas biaya atau layanan telepon premium/private seperti yang sering kita temui nomor bebas pulsa untuk perusahaan-perusahaan dan customer service. Atau bisa juga digunakan untuk nomor Intelligent Network Nasional.

Setelah angka (0)8xx , terserah bebas oleh Operatornya untuk mengalokasikan sisa 10 angka nomornya. Sehingga panjang maksimal nomor handphone Indonesia tetap 13 angka, sebagaimana aturan ITU.T diatas.

Tetapi biasanya, sampai saat sekarang, kelihatannya Operator telekomunikasi seluler mengalokasikan antara 6 s/d 9 angka setelahnya. Tidak sampai habis 10 angka yang diperbolehkan oleh standard ITU.T.

Sehingga secara umum, total panjang nomor handphone Indonesia itu untuk format 08xxxxxxx adalah antara 10-13 angka dan itu termasuk angka 0 didepannya, misal 0812345678 (10 angka), 08123456789 (11 angka), 081234567890 (12 angka), dan 0812345678901 (13 angka).

Jadi seperti apa Validasi Regex Telepon Selular ?



Regex Telepon Selular versi 1 (sederhana) :
^(\+62|62|0)8[1-9][0-9]{6,9}$

Regex ini mempertimbangkan prefix 62, +62 atau 0, dan panjang digit, dan tanpa spasi.

Untuk kasus pertama ini, dianggap valid untuk : +62897123456, 0897123456.

Contoh eksekusi (di linux ubuntu 20.04):

>>> echo '0819123456789' | grep -P '^(\+62|62|0)8[1-9][0-9]{6,9}$'


Regex Telepon Selular versi 2 (menengah) :

^(\+62|62)?[\s-]?0?8[1-9]{1}\d{1}[\s-]?\d{4}[\s-]?\d{2,5}$

Regex ini mempertimbangkan prefix 62, +62, atau 0, dan panjang digit, karakter spasi, dan karakter - sebagai pemisah.

Untuk kasus kedua, dianggap valid untuk : +62 897 123456, +62-897-123456, 0-897-123456, 089123456, 62 897-1234-5678

Contoh eksekusi (di linux ubuntu 20.04):

>>> echo '+62 897 123456' | grep -P '^(\+62|62)?[\s-]?0?8[1-9]{1}\d{1}[\s-]?\d{4}[\s-]?\d{2,5}$'


Ada beberapa cara lain lagi yang bisa digunakan untuk validasi ini, tetapi dengan cara lebih advance seperti Negative LookAhead, Positive Lookbehind, dll, tetapi itu akan dibahas di lain waktu.

Demikian 2 regex untuk telepon selular Indonesia. Selanjutnya bisa dilihat regex untuk telepon tetap di Indonesia .

Referensi

Peraturan Kominfo terkait penomoran telepon