Coba Cek Nomor Telepon Tetap Anda :
Validasi dasar regex dari inputan ini cukup fleksibel : bisa pakai +62, 62, 0xx, 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 ! :


Untuk mengubahnya jadi lebih strict, maka modifikasi saja regex yang dijelaskan di artikel dibawah sesuai dengan kebutuhan Anda. Ayo jadikan latihan untuk mengecek pemahaman Anda terhadap pola regex tersebut. Tarik nafas dalam-dalam dan pelan-pelan saja, nanti juga bisa !


Validasi nomor telepon tetap (PSTN) juga merupakan salah satu validasi umum di dunia pemrograman.

Apa acuan kita ?

Sama dengan artikel sebelumnya Regex Nomor Hanphone, acuannya adalah Rekomendasi Standar penomoran telekomunikasi oleh ITU.T E.164.

Bagaimana standarnya itu ?

Coba kita lihat gambar dibawah ini :

Standar penomoran telekomunikasi oleh ITU.T E.164

Panjang nomor telepon itu maksimal 15 digit

misalnya : 62 12345678

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

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

Sisanya yang maksimal13 digit diisi dengan kode/nomor yang ditentukan oleh Regulator Telekomunikasi tiap negara

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

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

Penjelasan


Pola nomor telepon tetap Indonesia yang valid ?

Kode negara Indonesia adalah 62, dan sisa digitnya digunakan berbeda tergantung jenis jaringannya.

~ Nomor telepon jaringan tetap

Nomor telepon jaringan tetap bisa berupa nomor telepon rumah, yang biasanya pakai kabel, disediakan oleh PT. Telkom Indonesia. Istilah teknis nya ini adalah PSTN (Public Switched Telephone Network).

Atau juga nomor telepon kantor yang bisa berupa PABX (Private Automatic Branch Exchange) yang juga nanti menyambung dengan jaringan PT. Telkom Indonesia sehingga bisa dipanggil dari telepon luar.

Atau juga nomor telepon rumah sekaligus sebagai paket Internet. Dulu terkenal dengan istilah ADSL (Asymmetric Digital Subscriber Line).

Dua contoh terakhir digolongkan sebagai ISDN (Integrated Subscriber Digital Network).

Contoh


*   62 (0)21 67123121     
*   (0) 752 212032  
*   62 (0)22 4321212

62 adalah prefix internasional untuk Indonesia, dan Departemen Kominfo menetapkan maksimal 10 angka setelahnya itu untuk tipe jaringan telepon tetap. Sehingga total panjang standar penomoran telepon jaringan tetap adalah 12 angka (dengan 62 di depannya, dan 10 angka setelahnya), atau 11 angka (dengan 0 didepannya, dan 10 angka setelahnya).

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.

Adapun 10 angka yang kita bicarakan diatas, terdiri atas :

  1. Kode Wilayah di awal nomor, dengan pola : (0)AB(C) (berarti sebanyak 2-3 digit)

      --> A = 2,3,4,5,6,7,dan 9.
      --> B = 0..9
      --> C = 0..9
      --> 0 dan C sifatnya opsional.
      --> misalnya 021 untuk Nomor Telepon di Jakarta
                   022 untuk Nomor Telepon di Bandung
                   0971 untuk Nomor Telepon di Merauke, Papua
                   0652 untuk Nomor Telepon di Sabang, Aceh
    

    Pembagian prefix kode wilayah di Indonesia : Alokasi prefix nomor telepon tetap di Indonsia

  2. Nomor Pelanggan setelahnya, dengan pola : DEF(G) - x1x2x3x4, (berarti sebanyak 8 atau 7 digit maksimalnya)

      --> D = 2..9
      --> D = 0 TIDAK digunakan , agar tidak rancu dengan nomor prefix
                Sehingga 021 04122121 tidak valid
      --> D = 1 TIDAK digunakan untuk umum, karena digunakan untuk nomor darurat, pelayanan pelanggan
                dan pelayanan umum lainnya.
                Misalkan : 021 118 untuk Ambulans
                           021 123 untuk PLN  
      --> bagian EFG berbeda peruntukan, lebih untuk pengelompokan untuk tiap kode daerah.         
    

Coba kita lihat contohnya :


021-5623123 akan matching dengan pola sbb:

(0)AB-DEFx1x2x3x4


0652-752126 akan matching dengan pola sbb:

(0)ABC-DEFx1x2x3




Jadi seperti apa Validasi Regex Telepon Tetap ?



Validasi telepon tetap versi 1 (sederhana) :
^(\+62|62|0)([2-7]|9)\d(\d)?[2-9](\d){6,7}$

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

Untuk kasus pertama ini, dianggap valid untuk : +6212345678, 0212345678.

Contoh eksekusi (di linux ubuntu 20.04):

>>> echo '+6212345678' | grep -P '^(\+62|62|0)([2-7]|9)\d(\d)?[2-9](\d){6,7}$'
>>> echo '0212345678' | grep -P '^(\+62|62|0)([2-7]|9)\d(\d)?[2-9](\d){6,7}$'



Validasi telepon tetap versi 2 (menengah) : :
^(\+62|62)?[\s-]?0?([2-7]|9)\d(\d)?[\s-]?[2-9](\d){6,7}$

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

Untuk kasus kedua, dianggap valid untuk : +62212345678, +62 21 2345678, , 0212345678, 021-2345678

Contoh eksekusi (di linux ubuntu 20.04):

>>> echo '+62212345678' | grep -P '^(\+62|62)?[\s-]?0?([2-7]|9)\d(\d)?[\s-]?[2-9](\d){6,7}$'
>>> echo '+62 21 2345678' | grep -P '^(\+62|62)?[\s-]?0?([2-7]|9)\d(\d)?[\s-]?[2-9](\d){6,7}$'
>>> echo '0212345678' | grep -P '^(\+62|62)?[\s-]?0?([2-7]|9)\d(\d)?[\s-]?[2-9](\d){6,7}$'
>>> echo '021-2345678' | grep -P '^(\+62|62)?[\s-]?0?([2-7]|9)\d(\d)?[\s-]?[2-9](\d){6,7}$'



Ada banyak cara lagi untuk membuat regex nya lebih tepat, misalnya dengan Negative Lookahead, tapi itu akan dibahas lain kali.

Demikian 2 regex untuk telepon tetap Indonesia.


Referensi

Peraturan Kominfo terkait penomoran telepon