آموزش برنامه نویسی

بررسی صحت شماره موبایل با کاراکتر فارسی و اینگلیسی در c#

بررسی صحت شماره موبایل با کاراکتر فارسی و اینگلیسی در c#Reviewed by مهدی نیکخو on Oct 27Rating: 5.0بررسی صحت شماره موبایل با کاراکتر فارسی و اینگلیسی در c#

سلام امیدوارم روز خوبی داشته باشید من چند روز پیش درگیر این بودم که یک regular expression برای تایید صحت شماره موبایل بنویسیم اما مشکلی که داشتم تو هیچ سایتی پیدا نکردم که با هم تست کنه یا شماره های فارسی رو بررسی میکرد یا اینگلیسی و حتی برای موبایل هم نبود البته من بعد از یکم کار کردن با regex تونستم فرمول مورد نیازم رو بنویسم و این پست هم برای معرفی این regular expression نوشته ام امیدوارم ازش لذت ببرید 🙂

خب من regex ای نوشتم هم شماره موبایل فارسی  و هم شماره موبایل اینگلیسی رو بررسی میکنه دستور اش به شکل زیر هستش :

^(?:(\u0660\u0669[\u0660-\u0669][\u0660-\u0669]{8})|(\u06F0\u06F9[\u06F0-\u06F9][\u06F0-\u06F9]{8})|(09[0-9][0-9]{8}))$


تا این جا فرض میگیرم که شما UI خود را آماده کردید و وقتی فرم ارسال میشه به اکشن مون یا شماره موبایل فارسی هستش یا اینگلیسی اگه فارسی باشه باید  model مون رو بررسی کنیم اگه شماره اش فارسی بود تبدیل کنه به شماره های اینگلیسی و بعد هرکاری خواستید باهاش بکنید 🙂 من یک helper به نام  ConvertPersianNumberToEnglish نوشتم برای تبدیل عدد های فارسی به اینگلیسی که از کد زیر استفاده میکنیم :

        public static string ConvertPersianNumberToEnglish(string input)
        {
            string EnglishNumbers = "";


            for (int i = 0; i < input.Length; i++)
            {
                if (Char.IsDigit(input[i]))
                {
                    EnglishNumbers += char.GetNumericValue(input, i);

                }
                else
                {
                    EnglishNumbers += input[i].ToString();
                }
            }
            return EnglishNumbers;
        }

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

if (Regex.Match(model.PhoneNo, $"^(?:(\u0660\u0669[\u0660-\u0669][\u0660-\u0669]{8})|(\u06F0\u06F9[\u06F0-\u06F9][\u06F0-\u06F9]{8})|(09[0-9][0-9]{8}))$").Success) //check if phone number is persian number
                {
                    //convert persian number to english number
                    model.PhoneNo = PersianHelper.ConvertPersianNumberToEnglish(model.PhoneNo); 
                }

 

امیدوارم این پست به شما کمک کنه ( من یکم جست و گریخته میگم چون میدونم مخاطب این پست افرادی هستند که میخواهند این کار رو انجام بدند و درگیر همین چند خط کد هستند که من تجربه اش رو داشتم و خواستم فقط به اشتراک بزارم تا راحت تر مشکل دوستان همکاران برطرف بشه )

مرسی از توجهتون

 

مهدی نیکخو

حوزه ی تخصصی ام برنامه نویسی با تکنولوژی های مایکروسافت هستش اما بقیه تکنولوژی های دیگه رو هم دوست میدارم :) من به این اعتقاد دارم که اگه "هرچیزی که یادگرفتم و یاد بدم ، بیشتر یاد میگیرم" برای همین نیکخو آی آر را ساختم تا بنویسم و دوستانی که مثل من زمانی اون مشکل من رو داشتند سریع مشکلشون حل بشه

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

نظر شما چیست؟