Validasi nomor telepon dengan JavaScript


143

Saya menemukan kode ini di beberapa situs web, dan berfungsi dengan baik. Ini memvalidasi bahwa nomor telepon dalam salah satu format ini:
(123) 456-7890 atau 123-456-7890

Masalahnya adalah bahwa klien saya (saya tidak tahu mengapa, mungkin barang-barang klien) ingin menambahkan format lain, sepuluh angka berturut-turut, seperti ini: 1234567890 .

Saya menggunakan ungkapan reguler ini,

/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/

Bagaimana saya dapat menambahkan bahwa itu juga memvalidasi format lain? Saya tidak pandai dengan ekspresi reguler.



5
Sebagai aturan praktis - mencoba memvalidasi nomor telepon pasti akan gagal. Apa dengan struktur berbeda di berbagai negara dan ekstensi, itu masalah yang sangat sulit.
Quentin

1
Dan bagaimana dengan misalnya notasi Perancis? "12 34 56 78 90" Cukup hapus semuanya kecuali angka (kecuali mungkin tanda tambah di awal) dan periksa panjangnya.
thejh

Anda seharusnya tidak , pada kenyataannya, menggunakan ekspresi reguler untuk memvalidasi nomor telepon dengan benar .
Dan Dascalescu

Jawaban:


122

Pertama, validator format Anda jelas hanya sesuai untuk nomor NANP (kode negara +1). Apakah aplikasi Anda akan digunakan oleh seseorang dengan nomor telepon dari luar Amerika Utara? Jika demikian, Anda tidak ingin mencegah orang-orang itu memasukkan nomor [internasional] yang benar-benar valid.

Kedua, validasi Anda salah. Angka NANP berupa di NXX NXX XXXXmana Ndigit 2-9 dan Xdigit 0-9. Selain itu, kode area dan pertukaran mungkin tidak mengambil bentuk N11(diakhiri dengan dua yang) untuk menghindari kebingungan dengan layanan khusus kecuali angka dalam kode area non-geografis (800, 888, 877, 866, 855, 855, 900) dapat memiliki N11pertukaran.

Jadi, regex Anda akan memberikan nomor (123) 123 4566 meskipun itu bukan nomor telepon yang valid. Anda dapat memperbaikinya dengan menggantinya \d{3}dengan [2-9]{1}\d{2}.

Akhirnya, saya merasa Anda memvalidasi input pengguna di browser web. Ingat bahwa validasi sisi klien hanya kenyamanan yang Anda berikan kepada pengguna ; Anda masih perlu memvalidasi semua input (lagi) di server.

TL; DR tidak menggunakan ekspresi reguler untuk memvalidasi data dunia nyata yang kompleks seperti nomor telepon atau URL . Gunakan perpustakaan khusus .


Saya setuju bahwa regex tidak cukup untuk memvalidasi nomor telepon karena paket penomoran telepon benar-benar berfungsi berdasarkan jangkauan, mis. 12300000 hingga 12399999 ( numberingplans.com/... )

146

Regex pilihan saya adalah:

/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im

Format yang valid:

(123) 456-7890
(123)456-7890
123-456-7890
123.456.7890
1234567890
+31636363634
075-63546725


3
Apa itu? Tidak dapat menemukan penjelasan di google :)
Sarin Suriyakoon

7
@SarinSuriyakoon imembuat ekspresi case-insensitive dan mmelakukan pencarian multi-line
Rodrigo Leite

44
mengapa Anda perlu case-insensitive untuk angka?
Solomon Closson

1
Regex ini sangat bagus karena jika Anda menghapus ^di awal dan $di akhir ia juga dapat menemukan nomor telepon di tengah-tengah string
hobberwickey

2
@darioxlz '123456789' bukan panjang yang valid untuk nomor telepon
punjabi4life

67

Jika Anda mencari 10 dan hanya 10 digit, abaikan semuanya kecuali digit-

   return value.match(/\d/g).length===10;

Inilah yang akan saya sarankan. Semilir mudah. Dan terlalu banyak validasi bisa menjadi hal yang buruk pula.
mwilcox

1
Ini cara terbaik untuk pergi. Kecuali Anda BENAR-BENAR peduli apa formatnya, semua ini dilakukan adalah memastikan nomor tersebut sebagian valid, dan bukan sekelompok omong kosong.
mdance

7
Anda berarti kecocokan (/ \ d / g) tidak cocok (/ \ d /) atau panjangnya akan 1, bukan 10; juga, kecocokan pada string kosong adalah nol. Paling tidak itu harus var m = value.match (/ \ d / g); return m && m.length === 10
Doug

Atau return (value.match(/\d/g) || []).length == 10atau lebih sederhana (tapi sama-sama cacat): return value.replace(/\D/g,'').length == 10.
RobG

Aku seperti ini: /\D/gi.test(value). Semua yang bukan digit, termasuk spasi putih, garis putus-putus, dll ...
Gus

33

Apa yang akan saya lakukan adalah mengabaikan format dan memvalidasi konten numerik:

var originalPhoneNumber = "415-555-1212";

function isValid(p) {
  var phoneRe = /^[2-9]\d{2}[2-9]\d{2}\d{4}$/;
  var digits = p.replace(/\D/g, "");
  return phoneRe.test(digits);
}

Setuju mengenai pengabaian pemformatan, .eg, ini sangat umum untuk nomor ponsel disajikan dengan spasi seperti XXXX XXX tetapi untuk formulir yang memerlukan input tanpa spasi, yaitu sebagai XXXXXXXXXX.
RobG

30
/^[+]*[(]{0,1}[0-9]{1,3}[)]{0,1}[-\s\./0-9]*$/g

(123) 456-7890
+ (123) 456-7890
+ (123) -456-7890
+ (123) - 456-7890
+ (123) - 456-78-90
123-456-7890
123.456.7890
1234567890
+3163636363434
075-63546725

Ini adalah opsi yang sangat longgar dan saya lebih memilih untuk tetap seperti ini, kebanyakan saya menggunakannya dalam formulir pendaftaran di mana pengguna perlu menambahkan nomor telepon mereka. Biasanya pengguna memiliki masalah dengan formulir yang menerapkan aturan pemformatan yang ketat, saya lebih suka pengguna untuk mengisi angka dan memformatnya di layar atau sebelum menyimpannya ke database. http://regexr.com/3c53v


3
regex sedikit dimodifikasi untuk memungkinkan misalnya untuk +41 (79) 123 45 67(Swiss):/^[+]?[\s./0-9]*[(]?[0-9]{1,4}[)]?[-\s./0-9]*$/g
Remigius Stalder

Yang ini sepertinya cocok untuk saya karena tidak terlalu gesit dan sepertinya mencakup semua format internasional (dan terima kasih @RemigiusStalder untuk perbaikan Swiss)
Gavin

Jika Anda memiliki java backend, Anda dapat menambahkan normalisasi nomor telepon, misalnya dari github.com/google/libphonenumber
Remigius Stalder

29

REGEX berikut akan memvalidasi salah satu format ini:

(123) 456-7890
123-456-7890
123.456.7890
1234567890

/^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/

3
Anda perlu melarikan diri dari .atau itu akan cocok dengan karakter sewenang-wenang, melanggar regex Anda.
Christoph

1
Ini membawa saya ke arah yang benar. Terima kasih! Sayangnya ungkapan ini juga cocok dengan (1234567890 dan 123) 4567890. ^ ((([0-9] {3})) | ([0-9] {3})) [- \ s \.]? [0-9] {3} [- \ s \.]? [0-9] {4} $ menangani masalah kecil itu.
Joe Hawkins

15

Saya akan menyarankan menggunakan sesuatu yang lebih jelas (terutama berpikir untuk siapa yang harus menjaga kode) ... bagaimana dengan:

var formats = "(999)999-9999|999-999-9999|9999999999";
var r = RegExp("^(" +
               formats
                 .replace(/([\(\)])/g, "\\$1")
                 .replace(/9/g,"\\d") +
               ")$");

di mana regexp dibangun dari templat yang jelas? Menambahkan yang baru akan menjadi no-brainer dan bahkan mungkin pelanggan itu sendiri dapat melakukannya di halaman "opsi".


15

Di mana str dapat berupa salah satu dari formart ini: 555-555-5555 (555)555-5555 (555) 555-5555 555 555 5555 5555555555 1 555 555 5555

function telephoneCheck(str) {
  var isphone = /^(1\s|1|)?((\(\d{3}\))|\d{3})(\-|\s)?(\d{3})(\-|\s)?(\d{4})$/.test(str);
  alert(isphone);
}
telephoneCheck("1 555 555 5555");


nice regexp, itulah jawaban terbaik untuk pertanyaan ini
JoelBonetR

9

Coba yang ini - ini termasuk validasi untuk format internasional juga.

/^[+]?(1\-|1\s|1|\d{3}\-|\d{3}\s|)?((\(\d{3}\))|\d{3})(\-|\s)?(\d{3})(\-|\s)?(\d{4})$/g

Regex ini memvalidasi format berikut:

  • (541) 754-3010 Domestik
  • + 1-541-754-3010 Internasional
  • 1-541-754-3010 Memanggil di AS
  • 001-541-754-3010 Panggilan dari Jerman
  • 191 541 754 3010 Panggilan dari Prancis

6

/^\+?1?\s*?\(?\d{3}(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$/

Meskipun posting ini sudah tua tetapi ingin meninggalkan kontribusiku. ini diterima: 5555555555 555-555-5555 (555)555-5555 1 (555) 555-5555 1 555 555 5555 1 555-555-5555 1 (555) 555-5555

ini tidak diterima:

555-5555 -> untuk menerima penggunaan ini: ^\+?1?\s*?\(?(\d{3})?(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$

5555555 -> untuk menerima penggunaan ini: ^\+?1?\s*?\(?(\d{3})?(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$

1 555) 555-5555 123 ** & !! asdf # 55555555 (6505552368) 2 (757) 622-7382 0 (757) 622-7382 -1 (757) 622-7382 2 757 622-7382 10 (757) 622 -7382 27576227382 (275) 76227382 2 (757) 6227382 2 (757) 622-7382 (555) 5 (55?) - 5555

ini adalah kode yang saya gunakan:

function telephoneCheck(str) {
  var patt = new RegExp(/^\+?1?\s*?\(?\d{3}(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$/);
  return patt.test(str);
}

telephoneCheck("+1 555-555-5555");

satu-satunya masalah dari regex ini adalah bahwa ia menganggap valid string telepon dengan hanya satu ')' atau hanya satu '(' (seperti "(555-555-5555")
happyZZR1400

5

Ini akan berhasil:

/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/

The ?menandakan karakter yang kelompok sebelumnya harus dicocokkan nol atau satu kali. Grup (-|\s)akan mencocokkan a -atau |karakter. Menambahkan ?setelah kemunculan kedua grup ini di regex Anda memungkinkan Anda untuk mencocokkan urutan 10 digit berturut-turut.



2

Jawaban semua orang bagus, tapi inilah yang saya pikir sedikit lebih komprehensif ...

Ini ditulis untuk penggunaan javascript yang cocok dengan satu angka dalam satu baris:

^(?!.*911.*\d{4})((\+?1[\/ ]?)?(?![\(\. -]?555.*)\( ?[2-9][0-9]{2} ?\) ?|(\+?1[\.\/ -])?[2-9][0-9]{2}[\.\/ -]?)(?!555.?01..)([2-9][0-9]{2})[\.\/ -]?([0-9]{4})$

Jika Anda ingin mencocokkan pada batas kata, cukup ubah ^ dan $ ke \ b

Saya menyambut setiap saran, koreksi, atau kritik terhadap solusi ini. Sejauh yang saya tahu, ini cocok dengan format NANP (untuk nomor AS - saya tidak memvalidasi negara-negara Amerika Utara lainnya saat membuat ini), menghindari kesalahan 911 (tidak bisa dalam kode area atau kode wilayah), menghilangkan hanya angka-angka 555 yang benar-benar tidak valid (kode wilayah 555 diikuti oleh 01xx di mana x = angka apa pun).


1

/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/

The ?menandakan karakter yang kelompok sebelumnya harus dicocokkan nol atau satu kali. Grup (-|\s)akan mencocokkan a -atau |karakter.


1

Saya harus setuju bahwa memvalidasi nomor telepon adalah tugas yang sulit. Adapun masalah khusus ini saya akan mengubah regex dari

/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)\d{4}$/

untuk

/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/

karena satu-satunya elemen lagi yang menjadi tidak perlu adalah tanda hubung / spasi terakhir.


Saya benar-benar mencoba untuk meningkatkan permainan Regex saya! Saya memeriksa saran Anda menggunakan "Pelatih Regex." Saya menggunakan regex (()? \ D {3} ())? (- | \ s)? \ D {3} (- | \ s)? \ D {4} dan string target (123) 456-7890 tetapi karena alasan tertentu hanya meraih 7 digit terakhir. Ada ide?
Aaron Hathaway

Yap regex sedikit kasar pada otak ... dan kesabaran. Ok coba / ^ [(]? (\ D {3}) [)]? [- | \ s]? (\ D {3}) [- | \ s]? (\ D {4}) $ / the bagian pertama dari regex yang lebih tua tidak bekerja dengan baik: "(()? \ d {3} ())" (() tanda kurung tengah sebenarnya dilihat sebagai bagian dari sintaks regex dan bukan karakter yang harus dicari.
Luc Veronneau

1

Jika Anda menggunakan tag input daripada kode ini akan membantu Anda. Saya menulis kode ini sendiri dan saya pikir ini cara yang sangat baik untuk digunakan dalam input. tetapi Anda dapat mengubahnya menggunakan format Anda. Ini akan membantu pengguna untuk memperbaiki format mereka pada tag input.

$("#phone").on('input', function() {  //this is use for every time input change.
        var inputValue = getInputValue(); //get value from input and make it usefull number
        var length = inputValue.length; //get lenth of input

        if (inputValue < 1000)
        {
            inputValue = '1('+inputValue;
        }else if (inputValue < 1000000) 
        {
            inputValue = '1('+ inputValue.substring(0, 3) + ')' + inputValue.substring(3, length);
        }else if (inputValue < 10000000000) 
        {
            inputValue = '1('+ inputValue.substring(0, 3) + ')' + inputValue.substring(3, 6) + '-' + inputValue.substring(6, length);
        }else
        {
            inputValue = '1('+ inputValue.substring(0, 3) + ')' + inputValue.substring(3, 6) + '-' + inputValue.substring(6, 10);
        }       
        $("#phone").val(inputValue); //correct value entered to your input.
        inputValue = getInputValue();//get value again, becuase it changed, this one using for changing color of input border
       if ((inputValue > 2000000000) && (inputValue < 9999999999))
      {
          $("#phone").css("border","black solid 1px");//if it is valid phone number than border will be black.
      }else
      {
          $("#phone").css("border","red solid 1px");//if it is invalid phone number than border will be red.
      }
  });

    function getInputValue() {
         var inputValue = $("#phone").val().replace(/\D/g,'');  //remove all non numeric character
        if (inputValue.charAt(0) == 1) // if first character is 1 than remove it.
        {
            var inputValue = inputValue.substring(1, inputValue.length);
        }
        return inputValue;
}

1

Hanya ingin menambahkan solusi khusus untuk memilih nomor telepon non-lokal (800 dan 900 jenis).

(\+?1[-.(\s]?|\()?(900|8(0|4|5|6|7|8)\3+)[)\s]?[-.\s]?\d{3}[-.\s]?\d{4}

1

Reg ini cocok untuk nomor telepon internasional dan berbagai format nomor ponsel.

Berikut ini adalah persamaan reguler: / ^ (+ {1} \ d {2,3} \ s? [(] {1} \ d {1,3} [)] {1} \ s? \ D + | + \ d {2,3} \ s {1} \ d + | \ d +) {1} [\ s | -]? \ d + ([\ s | -]? \ d +) {1,2} $ /

Ini adalah fungsi JavaScript

function isValidPhone(phoneNumber) {
    var found = phoneNumber.search(/^(\+{1}\d{2,3}\s?[(]{1}\d{1,3}[)]{1}\s?\d+|\+\d{2,3}\s{1}\d+|\d+){1}[\s|-]?\d+([\s|-]?\d+){1,2}$/);
    if(found > -1) {
        return true;
    }
    else {
        return false;
    }
}

Ini memvalidasi format berikut:

+44 07988-825 465 (dengan kombinasi tanda hubung sebagai pengganti ruang kecuali bahwa hanya spasi yang harus mengikuti +44)

+44 (0) 7988-825 465 (dengan kombinasi tanda hubung sebagai pengganti spasi kecuali bahwa tidak ada tanda hubung dapat ada secara langsung sebelum atau setelah (0) dan spasi sebelum atau setelah (0) tidak perlu ada)

123 456-789 0123 (dengan kombinasi tanda hubung sebagai pengganti spasi)

123-123 123 (dengan kombinasi tanda hubung sebagai pengganti spasi)

123 123456 (Spasi dapat diganti dengan tanda hubung)

1234567890

Tidak ada spasi ganda atau tanda hubung ganda dapat ada untuk semua format.


1

Validasi nomor telepon + kembalikan data yang diformat

function validTel(str){
  str = str.replace(/[^0-9]/g, '');
  var l = str.length;
  if(l<10) return ['error', 'Tel number length < 10'];
  
  var tel = '', num = str.substr(-7),
      code = str.substr(-10, 3),
      coCode = '';
  if(l>10) {
    coCode = '+' + str.substr(0, (l-10) );
  }
  tel = coCode +' ('+ code +') '+ num;
  
  return ['succes', tel];
}

console.log(validTel('+1 [223] 123.45.67'));


1

coba ini

/ ^ (\ + {0,}) (\ d {0,}) ([(] {1} \ d {1,3} [)] {0,}) {0,} (\ s? \ D + | \ + \ d {2,3} \ s {1} \ d + | \ d +) {1} [\ s | -]? \ d + ([\ s | -]? \ d +) {1,2} ( \ s) {0,} $ / gm

format yang valid

  • (123) 456-7890
  • (123)456-7890
  • 123-456-7890
  • 1234567890
  • +31636363634
  • +3 (123) 123-12-12
  • +3 (123) 123-12-12
  • +3 (123) 1231212
  • +3 (123) 12312123
  • +3 (123) 123 12 12
  • 075-63546725
  • +7910 120 54 54
  • 910 120 54 54
  • 8 999 999 99 99

https://regex101.com/r/QXAhGV/1


{1}tidak berguna, {0,}lebih baik ditulis *. Mengapa menggunakan semua grup tangkap ini? Mereka memperlambat proses.
Toto

ini tidak bagus. karena Anda dapat memasukkan banyak nomor yang Anda inginkan.
mohammad jawad Barati

1

Fungsi ini bekerja untuk kita dengan baik:

let isPhoneNumber = input => {

  try {
    let ISD_CODES = [93, 355, 213, 1684, 376, 244, 1264, 672, 1268, 54, 374, 297, 61, 43, 994, 1242, 973, 880, 1246, 375, 32, 501, 229, 1441, 975, 591, 387, 267, 55, 246, 1284, 673, 359, 226, 257, 855, 237, 1, 238, 1345, 236, 235, 56, 86, 61, 61, 57, 269, 682, 506, 385, 53, 599, 357, 420, 243, 45, 253, 1767, 1809, 1829, 1849, 670, 593, 20, 503, 240, 291, 372, 251, 500, 298, 679, 358, 33, 689, 241, 220, 995, 49, 233, 350, 30, 299, 1473, 1671, 502, 441481, 224, 245, 592, 509, 504, 852, 36, 354, 91, 62, 98, 964, 353, 441624, 972, 39, 225, 1876, 81, 441534, 962, 7, 254, 686, 383, 965, 996, 856, 371, 961, 266, 231, 218, 423, 370, 352, 853, 389, 261, 265, 60, 960, 223, 356, 692, 222, 230, 262, 52, 691, 373, 377, 976, 382, 1664, 212, 258, 95, 264, 674, 977, 31, 599, 687, 64, 505, 227, 234, 683, 850, 1670, 47, 968, 92, 680, 970, 507, 675, 595, 51, 63, 64, 48, 351, 1787, 1939, 974, 242, 262, 40, 7, 250, 590, 290, 1869, 1758, 590, 508, 1784, 685, 378, 239, 966, 221, 381, 248, 232, 65, 1721, 421, 386, 677, 252, 27, 82, 211, 34, 94, 249, 597, 47, 268, 46, 41, 963, 886, 992, 255, 66, 228, 690, 676, 1868, 216, 90, 993, 1649, 688, 1340, 256, 380, 971, 44, 1, 598, 998, 678, 379, 58, 84, 681, 212, 967, 260, 263],
      //extract numbers from string
      thenum = input.match(/[0-9]+/g).join(""),
      totalnums = thenum.length,
      last10Digits = parseInt(thenum) % 10000000000,
      ISDcode = thenum.substring(0, totalnums - 10);

    //phone numbers are generally of 8 to 16 digits
    if (totalnums >= 8 && totalnums <= 16) {
      if (ISDcode) {
        if (ISD_CODES.includes(parseInt(ISDcode))) {
          return true;
        } else {
          return false;
        }
      } else {
        return true;
      }
    }
  } catch (e) {}

  return false;
}

console.log(isPhoneNumber('91-9883208806'));


0

Ekspresi Reguler Sederhana: /\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g

Lihat formatnya, semoga berhasil:
444-555-1234
f: 246.555.8888
m: 1235554567


Harap format jawaban Anda (gunakan empat spasi sebagai indentasi untuk blok kode). Penjelasan tentang kode Anda juga akan meningkatkan kualitasnya.
Nander Speerstra

0
\\(?\d{3}\\)?([\-\s\.])?\d{3}\1?\d{4}

Ini akan memvalidasi nomor telepon dengan format variabel:

\\(?\d{3}\\)? menemukan 3 digit terlampir oleh tanda kurung atau tidak.

([\-\s\.])? menemukan karakter pemisah ini atau tidak

\d{3} menemukan 3 digit

\1menggunakan pemisah yang cocok pertama - ini memastikan bahwa pemisahnya sama. Jadi (000) 999-5555 tidak akan memvalidasi di sini karena ada pemisah spasi dan tanda hubung, jadi hapus saja "\ 1" dan ganti dengan sub-pola pemisah (melakukannya juga akan memvalidasi format non standar). Namun Anda harus tetap mengisyaratkan format untuk input pengguna.

\d{4} menemukan 4 digit

Memvalidasi:

  • (000) 999 5555
  • (000) -999-5555
  • (000) .999.5555
  • (000) 999-5555
  • (000) 9995555
  • 000 999 5555
  • 000-999-5555
  • 000.999.5555
  • 0009995555

BTW ini untuk JavaScript karenanya untuk meloloskan diri.


0

Coba fungsi js ini. Mengembalikan nilai true jika cocok dan false jika gagal Ref

function ValidatePhoneNumber(phone) {
        return /^\+?([0-9]{2})\)?[-. ]?([0-9]{4})[-. ]?([0-9]{4})$/.test(phone);
}


0

Abaikan semuanya kecuali angka.

Inilah yang saya gunakan:

// USA phones should contain at least 10 digits. For Ukrainian phones it's OK to have only 9 digits, without leading 0 and country code prefix: [+380] 88 888-88-88.
String.prototype.isValidPhone = function(digitsCount) {
  var str = this.trim().match(/\d/g);
  return str && str.length >= (digitsCount || 10); // default is at least 10 digits
}

-1

coba ini

/^[\+]?\d{2,}?[(]?\d{2,}[)]?[-\s\.]?\d{2,}?[-\s\.]?\d{2,}[-\s\.]?\d{0,9}$/im

format yang valid:

  1. (123) 456-7890
  2. (123)456-7890
  3. 123-456-7890
  4. 123.456.7890
  5. 1234567890
  6. +31636363634
  7. +3 (123) 123-12-12
  8. +3 (123) 123-12-12
  9. +3 (123) 1231212
  10. +3 (123) 12312123
  11. 075-63546725

Harap pastikan untuk memasukkan penjelasan dengan jawaban Anda. Meskipun mungkin berhasil, penting untuk menjelaskan bagaimana dan mengapa untuk mendapatkan informasi yang lengkap dan relevan. Terima kasih telah menjawab :)
Magix
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.