Raqam to'g'rilovchi

(Caller Normalizer) Qo'ng'iroq qiluvchining raqamini regex yordamida o'zgartirish

Bu nima?

Raqam to'g'irlovchi (Caller Normalizer) — kiruvchi qo'ng'iroqlarda abonent raqamini berilgan qoida(regex)ga mos ravishda o'zgartirish.


Bu nima uchun kerak?

Turli operatorlar va xorijiy tarmoqlardan raqamlar turli formatlarda kelishi mumkin:

  • 0901234567 → standart format kerak: +998901234567
  • 998901234567 → qisqa format kerak: 0901234567
  • 80123456789 → xalqaro format kerak: +380123456789

Caller Normalizer barcha kiruvchi raqamlarni bir xil formatga keltirib, keyingi modullarda (operator, navbat, Smart Redirect va h.k.) to'g'ri ishlashini ta'minlaydi.


Ajratilgan raqamlar


Maydonlar

Nomititle
Qoidaning tavsifi. Masalan: 0 bilan boshlangan raqamlar, Qisqa formatni to'ldirish
Regex patternregex
Qaysi raqamlarni o'zgartirish kerakligi. Pattern / belgilari ichida yoziladi. Almashtirish'da guruh qiymatlarini olish uchun () ishlatiladi.
Almashtirishreplacement
Yangi raqam formati. $1, $2 — patternning guruhlariga ishora qiladi.
Keyingi moduloutput
Raqam o'zgartirilgandan so'ng qo'ng'iroq qaysi modulga o'tadi.

Qanday ishlaydi?

Kiruvchi raqam: 0901234567

Pattern:      /^0(\d{9})$/
Almashtirish: +998$1

$1 = "901234567"  (qavs ichidagi qism)
Natija: +998901234567
  1. Kiruvchi raqam pattern'ga solishtіriladi.
  2. Mos kelsa — $1, $2 guruhlari almashtirishga qo'yiladi va yangi raqam hosil bo'ladi.
  3. "Keyingi modul" ga yangi raqam bilan yo'naltiriladi.
  4. Mos kelmasa — raqam o'zgarishsiz qoladi va baribir "Keyingi modul" ga yo'naltiriladi.

Nima uchun () guruh kerak?

Almashtirish'da raqamning bir qismini olish uchun pattern'da () bo'lishi shart.

❌ Xato:   /^0\d{9}$/    → +998$1
           $1 yo'q → natija: "+998"  ← noto'g'ri!

✓ To'g'ri: /^0(\d{9})$/  → +998$1
           $1 = "901234567" → natija: "+998901234567" ✓

Bir nechta guruh kerak bo'lsa:

Pattern:      /^(\d{3})(\d{7})$/
Almashtirish: $1-$2

Kirish: 9981234567
$1 = "998", $2 = "1234567"
Natija: 998-1234567

Regex va almashtirish qoidalari

Pattern har doim / belgilari ichida yoziladi: /pattern/

BelgiNima qiladiMisol patternMisol almashtirishNatija
()Guruh — almashtirish'da $1, $2 sifatida olinadi/^0(\d+)$/+998$10901234+998901234
^Satr boshidan boshlanishi/^998/998... mos keladi
$Satr oxiri bilan tugashi/\d{9}$/9 xonali raqam
\dIstalgan bitta raqam (0–9)/\d{9}/9 xonali raqam
\d{n}Aniq n ta raqam/\d{12}/12 xonali raqam
\+Literal + belgisi/^\+(\d+)$/$1+998901234998901234
?Oldingi belgi bo'lishi ham, bo'lmasligi ham mumkin/^\+?(\d+)$/+$1998...+998...
(a|b)a yoki b/^(0|00)(\d+)$/+998$20901...+998901...

Almashtirish belgilari

BelgiNimaMisol
$1Patternning 1-guruhi (...)/^0(\d+)$/+998$1
$2Patternning 2-guruhi/^(\d{3})(\d+)$/$1-$2

Misollar

NomiRegex patternAlmashtirishMisol kirishNatija
9 xonali raqamlar → to'liq xalqaro format/^(\d{9})$/+998$1901234567+998901234567
0 prefiksli → xalqaro format/^0(\d{9})$/+998$10901234567+998901234567
998 prefikssiz → to'liq format/^(?!998)(\d{9})$/998$1901234567998901234567
+ ni olib tashlash/^\+(\d+)$/$1+998901234567998901234567
+998 → qisqa 9 xonali formatga/^\+998(\d{9})$/$1+998901234567901234567
00+ xalqaro/^00(\d+)$/+$10049123456+49123456

Eslatmalar

  • Bir tizimda 200 tagacha Caller Normalizer qoidasi yaratish mumkin.
  • Raqam o'zgargandan so'ng keyingi modul yangi (normallashtirilgan) raqamni ko'radi.
  • Pattern noto'g'ri yozilsa tizim validatsiya xatosi beradi va qoida saqlanmaydi.
  • Bir nechta Caller Normalizer qoidasini zanjirlab ishlatish mumkin — birinchisi o'zgartiradi, ikkinchisi yana o'zgartiradi.

Patternlarni sinash