پرش به محتوا

تولیدکننده و اعتبارسنج شماره تلفن - شماره‌های آزمایشی برای هر کشور

تولید شماره تلفن‌های معتبر آزمایشی برای آمریکا، انگلستان، مکزیک، هند. ایجاد شماره‌های تلفن همراه یا ثابت با فرمت‌بندی مناسب. ابزار رایگان برای توسعه‌دهندگان برای آزمایش منطق اعتبارسنجی.

تولیدکننده و اعتبارسنج شماره تلفن

ماشین حساب بارگذاری...
📚

مستندات

چرا تولید شماره تلفن مهم است

تست منطق اعتبارسنجی شماره تلفن می‌تواند ناامیدکننده باشد. شما به شماره‌های واقعی‌ای نیاز دارید که از الگوهای کشوری خاص پیروی کنند، اما ایجاد دستی داده‌های تست خسته‌کننده و مستعد خطا است. این ابزار این مشکل را با تولید شماره تلفن‌های دارای ساختار معتبر برای چندین کشور حل می‌کند - با کدهای منطقه‌ای، پیش‌شماره‌های موبایل و قالب‌بندی مناسب.

چه در حال ساخت فرم تماس، تست API پیامک، یا پرکردن پایگاه داده توسعه باشید، شماره‌هایی دریافت می‌کنید که با فرمت‌های دنیای واقعی مطابقت دارند. این ابزار پیچیدگی استانداردهای بین‌المللی (مانند E.164) را مدیریت می‌کند در حالی که رابط را ساده نگه می‌دارد: یک کشور را انتخاب کنید، موبایل یا تلفن ثابت را برگزینید و تولید کنید.

چه چیزی آن را از تولیدکننده‌های ارقام تصادفی متمایز می‌کند؟ احترام به قوانین. شماره‌های موبایل مکزیکی کدهای منطقه‌ای مناسب (55 برای مکزیکوسیتی، 33 برای گوادالاخارا) دریافت می‌کنند. شماره‌های آمریکایی از الگوهای نامعتبر مانند شروع کدهای منطقه‌ای با 0 یا 1 اجتناب می‌کنند. شماره‌های موبایل انگلیسی با 7 شروع می‌شوند. این جزئیات هنگام تست منطق اعتبارسنجی که کاربران در تولید با آن مواجه می‌شوند، مهم هستند.

نحوه کار ژنراتور شماره تلفن

در پشت رابط ساده، ژنراتور از قوانین کشوری برای ایجاد شماره تلفن‌های معتبر استفاده می‌کند:

  1. انتخاب کشور و منطقه: کشور و منطقه هدف خود را انتخاب کنید. این کار کد منطقه را تعیین می‌کند - برای مثال، انتخاب "CDMX" در مکزیک به طور خودکار از کد منطقه 55 استفاده می‌کند.

  2. منطق نوع شماره: شماره‌های تلفن همراه و ثابت الگوهای متفاوتی دارند. در انگلستان، شماره‌های همراه با 7 شروع می‌شوند، در حالی که خطوط ثابت از کدهای جغرافیایی مانند 20 برای لندن استفاده می‌کنند. ابزار پیشوند صحیح را بر اساس انتخاب شما اعمال می‌کند.

  3. تولید رقم تصادفی: برای شماره‌های مشترک، ابزار ارقام تصادفی را در محدوده‌های معتبر تولید می‌کند. همه ارقام در همه جا کار نمی‌کنند - کدهای منطقه‌ای ایالات متحده نمی‌توانند با 0 یا 1 شروع شوند و برخی کدها برای خدمات رزرو شده‌اند.

  4. اعمال فرمت: شماره‌ها مطابق با استانداردهای E.164 (بین‌المللی) یا عرف‌های محلی فرمت می‌شوند. شماره‌های مکزیکی به صورت "+52 55 1234 5678" در سطح بین‌المللی یا "55 1234 5678" در سطح محلی ظاهر می‌شوند.

  5. اعتبارسنجی: هر شماره تولید شده با الگوهای regex خاص آن کشور بررسی می‌شود. این کار خطاهای ساختاری را قبل از نمایش شماره شناسایی می‌کند.

آنچه نخواهید دید: ابزار عمداً از شماره‌های اضطراری (مانند 911)، محدوده‌های آزمایشی و کدهای خدمات ویژه اجتناب می‌کند. این کار خروجی را برای محیط‌های آزمایشی که نمی‌خواهید به طور تصادفی سرویس‌های واقعی را فعال کنید، ایمن‌تر می‌سازد.

فرمول و الگوریتم‌ها

در حالی که تولید شماره تلفن ممکن است به نظر یک فرآیند تصادفی ساده برسد، پیاده‌سازی صحیح آن نیازمند درک محدودیت‌ها و الگوهای ریاضی است که شماره‌های تلفن را در مناطق مختلف معتبر می‌کنند.

الگوریتم تولید عدد تصادفی

الگوریتم اساسی برای تولید یک شماره تلفن معتبر از این فرمول پیروی می‌کند:

N=C+A+P+SN = C + A + P + S

جایی که:

  • NN شماره تلفن کامل است
  • CC کد کشور است (اختیاری برای فرمت محلی)
  • AA کد منطقه/ناحیه است
  • PP پیش‌شماره است (که ممکن است محدودیت‌هایی بر اساس نوع شماره داشته باشد)
  • SS شماره مشترک (ارقام تصادفی) است

الگوریتم اعتبارسنجی

اعتبارسنجی شماره‌های تلفن را می‌توان به عنوان یک عملیات تطبیق الگوی عبارت منظم بیان کرد که به صورت ریاضی به این شکل نمایش داده می‌شود:

1 & \text{اگر } N \text{ با } R_c \text{ مطابقت داشته باشد} \\ 0 & \text{در غیر این صورت} \end{cases}$$ جایی که: - $V(N)$ نتیجه اعتبارسنجی است (1 برای معتبر، 0 برای نامعتبر) - $N$ شماره تلفنی است که اعتبارسنجی می‌شود - $R_c$ الگوی عبارت منظم برای کشور $c$ است ### احتمال و توزیع هنگام تولید شماره‌های تلفن تصادفی، باید محدوده مجاز ارقام برای هر موقعیت را در نظر بگیریم. برای مثال، در ایالات متحده، کدهای منطقه نمی‌توانند با 0 یا 1 شروع شوند و نمی‌توانند کدهای خدماتی مانند 911 باشند. تعداد شماره‌های تلفن معتبر ممکن برای یک کشور را می‌توان به صورت زیر محاسبه کرد: $$P_c = \prod_{i=1}^{n} d_i$$ جایی که: - $P_c$ تعداد کل شماره‌های تلفن معتبر ممکن برای کشور $c$ است - $n$ تعداد موقعیت‌ها در شماره تلفن (بدون کد کشور) است - $d_i$ تعداد ارقام معتبر برای موقعیت $i$ است برای مثال، برای شماره‌های تلفن ایالات متحده (بدون کد کشور): - رقم اول کد منطقه: 8 احتمال (2-9) - دومین و سومین رقم کد منطقه: 10 احتمال هر کدام (0-9) - هفت رقم مشترک: 10 احتمال هر کدام (0-9) $$P_{US} = 8 \times 10 \times 10 \times 10 \times 10 \times 10 \times 10 \times 10 \times 10 \times 10 = 8 \times 10^9 = 8,000,000,000$$ این یعنی 8 میلیارد شماره تلفن معتبر ممکن وجود دارد، اگرچه بسیاری از آنها رزرو یا اختصاص داده نشده‌اند. ## ویژگی‌های کلیدی ### پشتیبانی چندکشوری با دقت منطقه‌ای شماره تلفن‌هایی برای چهار بازار اصلی تولید کنید: - **مکزیک (+52)**: کدهای منطقه‌ای برای CDMX (55)، گوادالاخارا (33)، مونترِی (81)، کانکون (998) و غیره - **ایالات متحده (+1)**: فرمت 10 رقمی استاندارد با کدهای منطقه‌ای معتبر - **انگلستان (+44)**: کدهای جغرافیایی برای لندن (20)، منچستر (161) و موبایل (7xxx) - **هند (+91)**: شماره‌های موبایل 10 رقمی با پیش‌شماره‌های اپراتور مناسب (6/7/8/9) هر منطقه از کدهای منطقه‌ای اصیل استفاده می‌کند. وقتی "مکزیکوسیتی" را انتخاب می‌کنید، کد 55 را دریافت می‌کنید - همان کدی که شماره‌های واقعی مکزیکی استفاده می‌کنند. این دقت هنگام آزمایش برنامه‌هایی که شماره‌ها را تجزیه یا اعتبارسنجی می‌کنند، مهم است. ### تغییر بین فرمت بین‌المللی و محلی تغییر بین دو نمایش استاندارد: - **بین‌المللی (E.164)**: +52 55 1234 5678 - برای API‌ها، پایگاه داده‌ها و سیستم‌های جهانی استفاده می‌شود - **محلی**: 55 1234 5678 - نحوه دیدن شماره‌ها توسط کاربران در کشور خودشان **چرا این مهم است**: برنامه شما ممکن است شماره‌ها را در هر دو فرمت دریافت کند. کاربران در مکزیک فرمت محلی را تایپ می‌کنند، اما کاربران بین‌المللی کدهای کشوری را شامل می‌کنند. آزمایش هر دو فرمت اطمینان می‌دهد که اعتبارسنجی شما ورودی دنیای واقعی را پوشش می‌دهد. ### تمایز بین موبایل و تلفن ثابت شماره‌های موبایل یا تلفن ثابت با پیش‌شماره‌های مناسب تولید کنید: - **موبایل**: شماره‌های انگلستان با 7 شروع می‌شوند، مطابق با مقررات Ofcom - **تلفن ثابت**: کدهای جغرافیایی مرتبط با شهرهای خاص (20 لندن، 11 دهلی) این تمایز فنی است، نه فقط ظاهری. شماره‌های موبایل و تلفن ثابت در یک کشور طرح‌های شماره‌گذاری متفاوتی دارند. منطق اعتبارسنجی شما باید هر دو را تشخیص دهد. ### کپی با یک کلیک روی دکمه کپی کلیک کنید تا بلافاصله شماره‌های تولید شده به کلیپ‌بورد شما اضافه شوند. بدون نیاز به انتخاب یا برجسته کردن دستی - فقط کلیک کنید و در اسکریپت‌های آزمایشی، درج SQL یا فیلدهای فرم پیست کنید. ## استانداردهای فرمت شماره تلفن ### درک E.164: استاندارد جهانی استاندارد [E.164](https://www.itu.int/rec/T-REC-E.164/en)، که توسط اتحادیه بین‌المللی مخابرات نگهداری می‌شود، نحوه کارکرد شماره‌های تلفن در سطح جهانی را تعریف می‌کند. این استاندارد که در سال ۱۹۸۴ ایجاد شد و هم‌اکنون نیز استفاده می‌شود، قوانین اساسی زیر را تعیین کرده است: - **حداکثر ۱۵ رقم** در مجموع (شامل کد کشور) - **علامت مثبت** (+) برای فرمت بین‌المللی - **بدون کاراکترهای خاص** در خود شماره (فاصله و خط تیره فقط برای نمایش هستند) ساختار فرمت: +[کد کشور] [شماره ملی] چرا این موضوع برای توسعه‌دهندگان مهم است: هنگام ذخیره‌سازی شماره تلفن در پایگاه داده‌ها، از فرمت E.164 استفاده کنید. این فرمت واضح، قابل تجزیه و با هر API مخابراتی سازگار است. شماره‌ای مانند "+15551234567" به طور جهانی قابل درک است، در حالی که "(555) 123-4567" نیاز به زمینه دارد تا مشخص شود شماره آمریکایی است. <svg width="600" height="200" xmlns="http://www.w3.org/2000/svg"> <title>ساختار فرمت شماره تلفن</title> <desc>نمودار نشان‌دهنده اجزای فرمت شماره تلفن بین‌المللی</desc> <!-- Background --> <rect x="10" y="50" width="580" height="80" fill="#f8fafc" stroke="#64748b" strokeWidth="2" rx="5" /> <!-- Country Code Section --> <rect x="20" y="60" width="80" height="60" fill="#dbeafe" stroke="#3b82f6" strokeWidth="2" rx="5" /> <text x="60" y="95" fontFamily="Arial" fontSize="14" textAnchor="middle" fill="#1e40af">+52</text> <text x="60" y="115" fontFamily="Arial" fontSize="10" textAnchor="middle" fill="#1e40af">کد کشور</text> <!-- Area Code Section --> <rect x="110" y="60" width="80" height="60" fill="#e0f2fe" stroke="#0ea5e9" strokeWidth="2" rx="5" /> <text x="150" y="95" fontFamily="Arial" fontSize="14" textAnchor="middle" fill="#0369a1">55</text> <text x="150" y="115" fontFamily="Arial" fontSize="10" textAnchor="middle" fill="#0369a1">کد منطقه</text> <!-- First Part Section --> <rect x="200" y="60" width="120" height="60" fill="#f0fdfa" stroke="#14b8a6" strokeWidth="2" rx="5" /> <text x="260" y="95" fontFamily="Arial" fontSize="14" textAnchor="middle" fill="#0f766e">1234</text> <text x="260" y="115" fontFamily="Arial" fontSize="10" textAnchor="middle" fill="#0f766e">شماره مشترک (بخش ۱)</text> <!-- Second Part Section --> <rect x="330" y="60" width="120" height="60" fill="#ecfdf5" stroke="#10b981" strokeWidth="2" rx="5" /> <text x="390" y="95" fontFamily="Arial" fontSize="14" textAnchor="middle" fill="#047857">5678</text> <text x="390" y="115" fontFamily="Arial" fontSize="10" textAnchor="middle" fill="#047857">شماره مشترک (بخش ۲)</text> <!-- Arrows --> <line x1="100" y1="90" x2="110" y2="90" stroke="#64748b" strokeWidth="2" /> <line x1="190" y1="90" x2="200" y2="90" stroke="#64748b" strokeWidth="2" /> <line x1="320" y1="90" x2="330" y2="90" stroke="#64748b" strokeWidth="2" /> <!-- Title --> <text x="300" y="30" fontFamily="Arial" fontSize="16" fontWeight="bold" textAnchor="middle" fill="#334155">فرمت شماره تلفن بین‌المللی (نمونه مکزیک)</text> </svg> ### فرمت‌های کشوری #### مکزیک (+52) سیستم شماره تلفن مکزیک از این الگوها پیروی می‌کند: - **شماره‌های موبایل**: جمعاً ۱۰ رقم - فرمت: +52 XX XXXX XXXX - مثال: +52 55 1234 5678 - شماره‌های موبایل در مکزیک معمولاً با کدهای منطقه‌ای مانند 55 (مکزیکوسیتی)، 33 (گوادالاخارا)، 81 (مونترِی) شروع می‌شوند - **شماره‌های ثابت**: ۸ رقم (به علاوه کد منطقه ۲ رقمی) - فرمت: +52 XX XXXX XXXX - مثال: +52 55 5123 4567 #### ایالات متحده (+1) - **موبایل و ثابت**: جمعاً ۱۰ رقم - فرمت: +1 XXX XXX XXXX - کدهای منطقه (۳ رقم اول) بسته به منطقه متفاوت است - شماره‌های موبایل و ثابت از یک فرمت پیروی می‌کنند اما پیشوندهای متفاوتی دارند #### انگلستان (+44) - **شماره‌های موبایل**: معمولاً با '7' شروع می‌شوند - فرمت: +44 7XXX XXXXXX - مثال: +44 7700 123456 - **شماره‌های ثابت**: بسته به منطقه متفاوت است - فرمت: +44 XX XXXX XXXX یا +44 XXX XXX XXXX - مثال: +44 20 1234 5678 (لندن) #### هند (+91) - **شماره‌های موبایل**: ۱۰ رقم، معمولاً با 6، 7، 8 یا 9 شروع می‌شوند - فرمت: +91 XXXXX XXXXX - مثال: +91 98765 43210 - **شماره‌های ثابت**: بسته به منطقه متفاوت، معمولاً ۸ رقم به علاوه کد STD - فرمت: +91 XX XXXX XXXX - مثال: +91 11 2345 6789 (دهلی) ## راهنمای شروع سریع: تولید اولین شماره تست شما ### تولید پایه (کمتر از ۱۰ ثانیه) ۱. **کشور خود را** از منوی کشویی انتخاب کنید: آمریکا (+۱)، انگلستان (+۴۴)، مکزیک (+۵۲)، یا هند (+۹۱) ۲. **یک منطقه را انتخاب کنید** تا کد منطقه صحیح را دریافت کنید: - مکزیک: شهر مکزیکو (۵۵)، گوادالاخارا (۳۳)، مونترِی (۸۱) - آمریکا: متفاوت بر اساس ایالت - انگلستان: لندن (۲۰)، منچستر (۱۶۱)، یا تلفن همراه (۷xxx) ۳. **موبایل یا تلفن ثابت را تغییر دهید** بسته به آنچه در حال تست آن هستید ۴. **فرمت را انتخاب کنید**: بین‌المللی (+کد کشور) یا محلی ۵. **روی "تولید" کلیک کنید** و نتیجه را کپی کنید ### مثال عملی: تست فرم تماس مکزیکی فرض کنید در حال ساخت یک فرم ثبت‌نام برای کاربران مکزیکی هستید و نیاز به تست اعتبارسنجی تلفن دارید: **برای شماره‌های موبایل شهر مکزیکو:** - کشور: "+۵۲ مکزیک" - منطقه: "شهر مکزیکو (CDMX)" - موبایل: فعال - فرمت: بین‌المللی (برای تست پردازش "+۵۲") - تولید کنید → نتیجه: "+۵۲ ۵۵ ۸۳۷۴ ۲۹۱۶" **برای تست فرمت محلی:** - تنظیمات قبلی را حفظ کنید، بین‌المللی را غیرفعال کنید - تولید کنید → نتیجه: "۵۵ ۸۳۷۴ ۲۹۱۶" اکنون دو فرمت معتبر دارید تا نحوه برخورد فرم شما با هر دو الگو را تست کنید. این شماره‌ها را در اعتبارسنج خود اجرا کنید تا مطمئن شوید هر دو الگو را می‌پذیرد. ## نمونه‌های پیاده‌سازی کد زیر نحوه تولید و اعتبارسنجی شماره تلفن‌ها در زبان‌های مختلف را نشان می‌دهد. این مثال‌ها منطق اصلی را نشان می‌دهند - در محیط تولید، توصیه می‌شود از [libphonenumber](https://github.com/google/libphonenumber) برای اعتبارسنجی جامع استفاده کنید. ### جاوا اسکریپت
1// مثال جاوا اسکریپت برای تولید یک شماره تلفن همراه مکزیکی تصادفی
2function generateMexicanMobileNumber(international = true) {
3  // کد منطقه مکزیکو سیتی
4  const areaCode = "55";
5  
6  // تولید 8 رقم تصادفی برای شماره
7  let number = "";
8  for (let i = 0; i < 8; i++) {
9    number += Math.floor(Math.random() * 10);
10  }
11  
12  // قالب‌بندی شماره
13  const formattedNumber = `${areaCode} ${number.substring(0, 4)} ${number.substring(4, 8)}`;
14  
15  // اضافه کردن کد کشور در صورت درخواست فرمت بین‌المللی
16  return international ? `+52 ${formattedNumber}` : formattedNumber;
17}
18
19// تابع برای اعتبارسنجی شماره تلفن مکزیکی
20function validateMexicanPhoneNumber(number) {
21  // الگو برای فرمت بین‌المللی
22  const intlPattern = /^\+52 \d{2} \d{4} \d{4}$/;
23  
24  // الگو برای فرمت محلی
25  const localPattern = /^\d{2} \d{4} \d{4}$/;
26  
27  return intlPattern.test(number) || localPattern.test(number);
28}
29
30// مثال استفاده
31const phoneNumber = generateMexicanMobileNumber();
32console.log(phoneNumber); // مثال: +52 55 1234 5678
33console.log(`معتبر است: ${validateMexicanPhoneNumber(phoneNumber)}`); // معتبر است: true
34

پایتون

1# مثال پایتون برای تولید و اعتبارسنجی شماره تلفن
2import random
3import re
4
5def generate_us_phone_number(international=True):
6    """تولید یک شماره تلفن ایالات متحده تصادفی."""
7    # تولید کد منطقه (اجتناب از کدهایی مانند 911)
8    area_code = random.randint(200, 999)
9    
10    # تولید 7 رقم تصادفی برای شماره
11    prefix = random.randint(200, 999)
12    line = random.randint(1000, 9999)
13    
14    # قالب‌بندی شماره
15    if international:
16        return f"+1 {area_code} {prefix} {line}"
17    else:
18        return f"({area_code}) {prefix}-{line}"
19        
20def validate_us_phone_number(number):
21    """اعتبارسنجی اینکه آیا رشته با الگوی شماره تلفن ایالات متحده مطابقت دارد."""
22    # الگو برای فرمت بین‌المللی
23    intl_pattern = r'^\+1 \d{3} \d{3} \d{4}$'
24    
25    # الگو برای فرمت محلی
26    local_pattern = r'^\(\d{3}\) \d{3}-\d{4}$'
27    
28    return bool(re.match(intl_pattern, number) or re.match(local_pattern, number))
29
30# مثال استفاده
31phone = generate_us_phone_number()
32print(phone)  # مثال: +1 555 123 4567
33print(f"معتبر است: {validate_us_phone_number(phone)}")  # معتبر است: True
34

جاوا

1import java.util.Random;
2import java.util.regex.Pattern;
3
4public class PhoneNumberGenerator {
5    private static final Random random = new Random();
6    
7    public static String generateUKMobileNumber(boolean international) {
8        // شماره‌های تلفن همراه انگلستان با '7' شروع می‌شوند
9        StringBuilder number = new StringBuilder("7");
10        
11        // تولید 9 رقم تصادفی دیگر
12        for (int i = 0; i < 9; i++) {
13            number.append(random.nextInt(10));
14        }
15        
16        // قالب‌بندی شماره
17        String formatted = number.substring(0, 4) + " " + number.substring(4, 10);
18        
19        // اضافه کردن کد کشور در صورت درخواست فرمت بین‌المللی
20        return international ? "+44 " + formatted : "0" + formatted;
21    }
22    
23    public static boolean validateUKMobileNumber(String number) {
24        // الگو برای فرمت بین‌المللی
25        Pattern intlPattern = Pattern.compile("^\\+44 7\\d{3} \\d{6}$");
26        
27        // الگو برای فرمت محلی
28        Pattern localPattern = Pattern.compile("^07\\d{3} \\d{6}$");
29        
30        return intlPattern.matcher(number).matches() || 
31               localPattern.matcher(number).matches();
32    }
33    
34    public static void main(String[] args) {
35        String phoneNumber = generateUKMobileNumber(true);
36        System.out.println(phoneNumber); // مثال: +44 7123 456789
37        System.out.println("معتبر است: " + validateUKMobileNumber(phoneNumber)); // معتبر است: true
38    }
39}
40

PHP

1<?php
2// مثال PHP برای تولید و اعتبارسنجی یک شماره تلفن همراه هندی
3
4function generateIndianMobileNumber($international = true) {
5    // شماره‌های تلفن همراه هندی با 6، 7، 8 یا 9 شروع می‌شوند
6    $prefixes = [6, 7, 8, 9];
7    $prefix = $prefixes[array_rand($prefixes)];
8    
9    // تولید 9 رقم تصادفی دیگر
10    $number = $prefix;
11    for ($i = 0; $i < 9; $i++) {
12        $number .= rand(0, 9);
13    }
14    
15    // قالب‌بندی شماره
16    $formatted = substr($number, 0, 5) . " " . substr($number, 5, 5);
17    
18    // اضافه کردن کد کشور در صورت درخواست فرمت بین‌المللی
19    return $international ? "+91 " . $formatted : $formatted;
20}
21
22function validateIndianMobileNumber($number) {
23    // الگو برای فرمت بین‌المللی
24    $intlPattern = '/^\+91 [6-9]\d{4} \d{5}$/';
25    
26    // الگو برای فرمت محلی
27    $localPattern = '/^[6-9]\d{4} \d{5}$/';
28    
29    return preg_match($intlPattern, $number) || preg_match($localPattern, $number);
30}
31
32// مثال استفاده
33$phoneNumber = generateIndianMobileNumber();
34echo $phoneNumber . "\n"; // مثال: +91 98765 43210
35echo "معتبر است: " . (validateIndianMobileNumber($phoneNumber) ? "true" : "false") . "\n"; // معتبر است: true
36?>
37

C#

1using System;
2using System.Text;
3using System.Text.RegularExpressions;
4
5public class PhoneNumberGenerator
6{
7    private static Random random = new Random();
8    
9    public static string GenerateMexicanMobileNumber(bool international = true)
10    {
11        // کد منطقه مکزیکو سیتی
12        string areaCode = "55";
13        
14        // تولید 8 رقم تصادفی برای شماره
15        StringBuilder number = new StringBuilder();
16        for (int i = 0; i < 8; i++)
17        {
18            number.Append(random.Next(10));
19        }
20        
21        // قالب‌بندی شماره
22        string formattedNumber = $"{areaCode} {number.ToString(0, 4)} {number.ToString(4, 4)}";
23        
24        // اضافه کردن کد کشور در صورت درخواست فرمت بین‌المللی
25        return international ? $"+52 {formattedNumber}" : formattedNumber;
26    }
27    
28    public static bool ValidateMexicanPhoneNumber(string number)
29    {
30        // الگو برای فرمت بین‌المللی
31        Regex intlPattern = new Regex(@"^\+52 \d{2} \d{4} \d{4}$");
32        
33        // الگو برای فرمت محلی
34        Regex localPattern = new Regex(@"^\d{2} \d{4} \d{4}$");
35        
36        return intlPattern.IsMatch(number) || localPattern.IsMatch(number);
37    }
38    
39    public static void Main()
40    {
41        string phoneNumber = GenerateMexicanMobileNumber();
42        Console.WriteLine(phoneNumber); // مثال: +52 55 1234 5678
43        Console.WriteLine($"معتبر است: {ValidateMexicanPhoneNumber(phoneNumber)}"); // معتبر است: True
44    }
45}
46

کاربردهای واقعی تولید شماره تلفن

آزمایش منطق اعتبارسنجی فرم

هنگام ساخت فرم‌های ثبت‌نام، باید مطمئن شوید که اعتبارسنجی شماره‌های نامعتبر را رد می‌کند بدون اینکه شماره‌های معتبر را نپذیرد. معمولاً توسعه‌دهندگان با الگوهای ساده مانند "555-1234" یا "123456789" آزمایش می‌کنند که موارد حاشیه‌ای را آشکار نمی‌کند.

سناریوی رایج، ثبت‌نام کاربران بین‌المللی است. فرم شما ممکن است شماره‌های آمریکایی را به خوبی بپذیرد اما در شماره‌های انگلیسی به دلیل طول متغیر کدهای جغرافیایی با مشکل مواجه شود. با تولید شماره‌های مختص کشورها، می‌توانید این مشکلات را قبل از گزارش کاربران شناسایی کنید.

نکته حرفه‌ای: 50 تا 100 شماره برای هر کشور تولید کنید و از اعتبارسنج عبور دهید. سریعاً خلأهای الگوهای regex خود را پیدا خواهید کرد.

پر کردن پایگاه داده‌های توسعه

در تجربه کار با مجموعه داده‌های بزرگ، داده‌های آزمایشی واقعی تفاوت بزرگی در شناسایی باگ‌های رابط کاربری ایجاد می‌کند. وقتی جدول مشتری شما 10,000 ورودی با "555-5555" دارد، متوجه نمی‌شوید که ستون‌های تلفن برای فرمت بین‌المللی "+44 7700 123456" به اندازه کافی پهن نیستند.

راه موثر: تولید شماره‌های متنوع (کشورهای مختلف، ترکیب تلفن همراه/ثابت) مطابق با توزیع تولید. اگر 70% کاربران شما مکزیکی هستند، 70% داده‌های آزمایشی را شماره‌های مکزیکی قرار دهید. این مشکلات نمایش، مرتب‌سازی و باگ‌های فرمت صادرات را آشکار می‌کند.

آزمایش یکپارچگی API

آزمایش API‌های پیامک یا صوت نیاز به شماره تلفن دارد، اما نمی‌توانید از داده‌های واقعی مشتری در توسعه استفاده کنید. ارائه‌دهندگان خدمات مانند Twilio شماره‌های آزمایشی محدودی ارائه می‌دهند. برای آزمایش جامع - به‌ویژه محدودیت نرخ، پردازش دسته‌ای و مدیریت خطا - به حجم بالا نیاز دارید.

اشتباه رایج: آزمایش فقط با شماره تلفن خودتان. این مشکلات مربوط به فرمت‌های مختلف یا شماره‌های بین‌المللی را آشکار نمی‌کند. مجموعه‌ای از شماره‌ها مطابق با بازارهای هدف تولید کنید تا باگ‌های فرمت را قبل از رسیدن به تولید شناسایی کنید.

محیط‌های آموزشی و نمایشی

هنگام آموزش کارکنان در سیستم‌های CRM یا نمایش نرم‌افزار به مشتریان، به داده‌ای نیاز دارید که واقعی به نظر برسد بدون افشای اطلاعات واقعی مشتری. شماره‌های تصادفی مانند "1234567890" ساختگی به نظر می‌رسند و اعتبار را تضعیف می‌کنند.

آنچه برایم مفید بوده: تولید مجموعه داده‌های آزمایشی کامل با نام‌ها، آدرس‌ها و شماره‌های تلفن با فرمت مناسب برای مناطقی که نمایش می‌دهید. این آموزش را موثرتر می‌کند زیرا شبیه به چیزی است که کاربران در تولید خواهند دید.

مقایسه با راه‌حل‌های جایگزین

کتابخانه libphonenumber گوگل

برای اعتبارسنجی تولید، libphonenumber گوگل استاندارد طلایی است. این کتابخانه بیش از ۲۰۰ کشور را پوشش می‌دهد، علیه داده‌های اپراتور واقعی اعتبارسنجی می‌کند و شماره‌ها را در فرمت‌های مختلف تجزیه می‌کند. با این حال، برای تولید طراحی نشده است.

زمان استفاده از libphonenumber: زمانی که نیاز به اعتبارسنجی ورودی کاربر در محیط تولید دارید. این کتابخانه مشکلاتی مانند کدهای منطقه نامعتبر و محدوده‌های شماره قطع شده را شناسایی می‌کند.

زمان استفاده از این ابزار: زمانی که به داده‌های تستی سریع بدون راه‌اندازی کتابخانه نیاز دارید. ابزار ما در چند ثانیه تولید می‌کند؛ ادغام libphonenumber ساعت‌ها طول می‌کشد.

کتابخانه‌های Faker و مجموعه‌های تولید داده

ابزارهایی مانند Faker.js یا کتابخانه Faker پایتون شماره تلفن را همراه با نام، آدرس و سایر داده‌های ساختگی تولید می‌کنند. آنها برای ایجاد پروفایل‌های کاربری کامل عالی هستند.

محدودیت: اکثر کتابخانه‌های Faker شماره‌هایی تولید می‌کنند که به نظر معتبر می‌رسند اما ممکن است همه قوانین کشوری را رعایت نکنند. برای مثال، ممکن است شماره‌های انگلستان را با ۸ شروع کنند (که پیش‌وندهای موبایل معتبر نیستند).

مزیت این ابزار: ما دقیقاً بر قوانین شماره تلفن تمرکز می‌کنیم و اطمینان می‌دهیم که شماره‌های تولید شده دقیقاً با الگوهای کشوری مطابقت دارند.

شماره‌های تست ارائه‌دهندگان مخابراتی

ارائه‌دهندگانی مانند Twilio و Vonage شماره‌های تست برای توسعه API ارائه می‌دهند. این شماره‌ها کاملاً کار می‌کنند اما پیام ارسال نمی‌کنند یا تماس برقرار نمی‌کنند.

زمان استفاده از شماره‌های تست ارائه‌دهنده: برای تست کامل که نیاز به تأیید ارسال پیام یا تکمیل تماس دارید.

زمان استفاده از این ابزار: برای تست‌های واحد، تست رابط کاربری و پرکردن پایگاه داده که به حجم و تنوع نیاز دارید بدون محدودیت‌های نرخ API یا هزینه.

تاریخچه فرمت‌ها و استانداردهای شماره تلفن

تکامل فرمت‌ها و استانداردهای شماره تلفن به طور نزدیکی با توسعه فناوری و زیرساخت‌های مخابراتی در سراسر جهان مرتبط است.

سیستم‌های تلفن اولیه (۱۸۷۰ میلادی-۱۹۵۰ میلادی)

زمانی که سیستم‌های تلفن در اواخر قرن ۱۹ معرفی شدند، شماره‌های تلفن بسیار کوتاه، اغلب تنها ۲-۴ رقم بودند، زیرا هر شهر یا روستا مرکز تلفن مستقل خود را داشت. اپراتورها به صورت دستی تماس‌ها را با وصل کردن سیم‌ها به تابلوهای سوئیچ برقرار می‌کردند.

با رشد شبکه‌های تلفن، شماره‌ها طولانی‌تر شدند و کدهای منطقه‌ای معرفی شدند. طرح شماره‌گذاری شمال آمریکا (NANP) در سال ۱۹۴۷ برای ایجاد یک سیستم یکپارچه در ایالات متحده و کانادا ایجاد شد و فرمت ۳-۳-۴ رقمی آشنا (کد منطقه، کد مرکز مخابراتی، شماره مشترک) را معرفی کرد.

توسعه استانداردهای بین‌المللی (۱۹۶۰ میلادی-۱۹۸۰ میلادی)

اتحادیه بین‌المللی مخابرات (ITU)، که در سال ۱۸۶۵ به عنوان اتحادیه بین‌المللی تلگراف تأسیس شد، در دهه ۱۹۶۰ شروع به توسعه استانداردهای بین‌المللی برای شماره‌گذاری تلفن کرد. این منجر به ایجاد کدهای کشوری و استانداردسازی رویه‌های شماره‌گیری بین‌المللی شد.

در سال ۱۹۶۴، ITU توصیه‌نامه E.163 را معرفی کرد که طرح شماره‌گذاری تلفن بین‌المللی را تأسیس کرد. این بعداً در سال ۱۹۸۴ توسط توصیه‌نامه E.164 جایگزین شد که همچنان استاندارد فعلی برای شماره‌گذاری مخابراتی عمومی بین‌المللی است.

انقلاب تلفن همراه (۱۹۹۰ میلادی-۲۰۰۰ میلادی)

پذیرش گسترده تلفن‌های همراه در دهه‌های ۱۹۹۰ و ۲۰۰۰ چالش‌های جدیدی را برای سیستم‌های شماره‌گذاری ایجاد کرد. بسیاری از کشورها پیش‌وندهای خاص یا محدوده‌های شماره کاملاً اختصاصی برای تلفن‌های همراه معرفی کردند. برای مثال، در انگلستان، شماره‌های تلفن همراه معمولاً با '۰۷' شروع می‌شوند، در حالی که در مکزیک، شماره‌های تلفن همراه همان فرمت خطوط ثابت را داشتند اما با کدهای منطقه متفاوت.

استانداردهای مدرن و عصر VoIP (۲۰۰۰ میلادی-حال حاضر)

با ظهور صدا از طریق پروتکل اینترنت (VoIP) و ارتباطات مبتنی بر اینترنت، فرمت‌های شماره تلفن انعطاف‌پذیرتر شده‌اند. استاندارد E.164 برای پشتیبانی از این فناوری‌های جدید تطبیق داده شده و بسیاری از کشورها طرح‌های شماره‌گذاری خود را برای ایجاد ظرفیت بیشتر بازنگری کرده‌اند.

معرفی قابلیت حمل شماره در بسیاری از کشورها تمایز بین شماره‌های تلفن همراه و خط ثابت را بیشتر مبهم کرده است، زیرا کاربران اکنون می‌توانند شماره خود را هنگام تغییر بین انواع خدمات حفظ کنند.

امروزه، فرمت‌های شماره تلفن همچنان در حال تکامل هستند، با این حال برخی کشورها حذف کدهای منطقه‌ای یا ادغام شماره‌های تلفن با هویت‌های دیجیتال را در نظر می‌گیرند. با این حال، ساختار اساسی ایجاد شده توسط E.164 همچنان پایه شماره‌گذاری مخابراتی جهانی است.

سؤالات متداول

چگونه یک شماره تلفن تصادفی برای تست تولید کنم؟

کشور و منطقه هدف خود را از منوهای کشویی انتخاب کنید، تعیین کنید که می‌خواهید فرمت تلفن همراه یا ثابت باشد، و روی "تولید شماره تلفن" کلیک کنید. این ابزار یک شماره از نظر ساختاری معتبر که با قوانین فرمت‌بندی آن کشور مطابقت دارد، ایجاد می‌کند. می‌توانید بین فرمت بین‌المللی (با کد کشور +) و فرمت محلی تغییر دهید.

برای تست سناریوهای مختلف، چندین شماره با تنظیمات متفاوت تولید کنید—این به شناسایی باگ‌های اعتبارسنجی که فقط با فرمت‌های خاص ظاهر می‌شوند، کمک می‌کند.

آیا این شماره‌های تلفن واقعی هستند که بتوان با آنها تماس یا پیامک گرفت؟

خیر. شماره‌های تولید شده از الگوهای فرمت‌بندی صحیح پیروی می‌کنند اما به صورت تصادفی ایجاد شده‌اند و به مشترکان واقعی اختصاص داده نشده‌اند. آنها برای تست منطق اعتبارسنجی، پر کردن پایگاه داده‌ها و نمایش نرم‌افزار طراحی شده‌اند—نه برای ارتباطات مخابراتی واقعی.

مهم: هرگز از این شماره‌ها برای تلاش برای تماس یا ارسال پیامک استفاده نکنید. ممکن است متعلق به افراد واقعی یا بدون تخصیص باشند.

تفاوت بین فرمت بین‌المللی و محلی شماره تلفن چیست؟

فرمت بین‌المللی شامل کد کشور با علامت مثبت است: +52 55 1234 5678 (مکزیک). این استاندارد E.164 برای مخابرات جهانی استفاده می‌شود.

فرمت محلی نشان می‌دهد که چگونه در داخل آن کشور شماره‌گیری می‌شود: 55 1234 5678 (مکزیک). کد کشور را حذف می‌کند زیرا تماس‌های داخلی نیاز به آن ندارند.

هنگام تست برنامه‌هایی که به کاربران بین‌المللی خدمات می‌دهند، هر دو فرمت را اعتبارسنجی کنید. کاربران شماره‌ها را به شکل‌های مختلف وارد می‌کنند—برخی "+1 555..." را کپی می‌کنند، دیگران "(555)..." را تایپ می‌کنند. یک اعتبارسنج قوی هر دو را پوشش می‌دهد.

چرا کشورهای مختلف فرمت‌های متفاوت شماره تلفن دارند؟

هر کشور طرح شماره‌گذاری خود را به طور مستقل توسعه داد، تحت تأثیر اندازه جمعیت، تقسیمات جغرافیایی و زمان ایجاد زیرساخت تلفنی خود. ایالات متحده در سال 1947 طرح شماره‌گذاری شمال آمریکا را با الگوی 3-3-4 رقمی پذیرفت. انگلستان از کدهای جغرافیایی با طول متغیر استفاده می‌کند. هند شماره‌های تلفن همراه 10 رقمی را برای پاسخگویی به جمعیت عظیم خود استاندارد کرد.

استاندارد E.164 اتحادیه بین‌المللی مخابرات چارچوبی را ارائه می‌دهد، اما کشورها آن را بر اساس نیازهای خود متفاوت اجرا می‌کنند. به همین دلیل اعتبارسنجی تلفن پیچیده است—نمی‌توان از یک الگوی regex برای همه کشورها استفاده کرد.

آیا می‌توانم از شماره‌های تلفن تولید شده در برنامه تولیدی خود استفاده کنم؟

فقط برای توسعه و تست استفاده کنید. آنها را به عنوان داده‌های کاربری واقعی در پایگاه داده‌های تولیدی ذخیره نکنید. دلایل آن:

  • ممکن است اتفاقی با شماره‌های واقعی تخصیص داده شده مطابقت داشته باشند
  • کدهای تأیید یا تماس را دریافت نخواهند کرد
  • کاربران در صورت مشاهده این شماره‌ها در پروفایل خود گیج خواهند شد

برای تست تولیدی (مانند محیط‌های مرحله‌ای)، از شماره‌های تست اختصاصی از ارائه‌دهنده SMS یا صوتی خود استفاده کنید.

(ادامه ترجمه در همین سبک...)

مراجع

  1. اتحادیه بین‌المللی مخابرات (ITU). "E.164: طرح شماره‌گذاری بین‌المللی مخابرات عمومی." ITU

  2. مدیریت طرح شماره‌گذاری شمال آمریکا. "درباره طرح شماره‌گذاری شمال آمریکا." NANPA

  3. آفکام (انگلستان). "شماره‌های تلفن - طرح شماره‌گذاری ملی تلفن." Ofcom

  4. وزارت مخابرات، دولت هند. "طرح شماره‌گذاری ملی." DoT هند

  5. موسسه فدرال مخابرات (مکزیک). "طرح ملی شماره‌گذاری." IFT مکزیک

  6. کتابخانه libphonenumber گوگل. "تجزیه، قالب‌بندی و اعتبارسنجی شماره تلفن." مخزن GitHub

  7. راهنمای جهانی شماره‌گذاری تلفن. "کدهای بین‌المللی و اطلاعات تماس." WTNG

شروع تولید شماره تلفن‌های تستی

به دنبال شماره تلفن‌های معتبر برای جلسه تست بعدی خود هستید؟ کشور خود را انتخاب کنید، تلفن همراه یا ثابت را مشخص کنید و شماره‌های با فرمت مناسب که از الگوهای واقعی پیروی می‌کنند را تولید کنید. این ابزار پیچیدگی استانداردهای بین‌المللی را مدیریت می‌کند و در عین حال رابط کاربری را ساده نگه می‌دارد - بدون حساب کاربری، بدون کلید API، فقط نتایج فوری.

مناسب برای توسعه‌دهندگانی که منطق اعتبارسنجی را تست می‌کنند، تیم‌های کنترل کیفیت که محیط‌های تستی را پر می‌کنند، یا هر کسی که به نمونه‌های واقع‌گرایانه شماره تلفن نیاز دارد.