دسته بندی ها
00:47 1399/12/25

اعتبارسنجی کدملی با استفاده از عبارات باقاعده (Regular Expression) در Asp.net core

مشخصات سوال کننده :
کاربر : Programmer     امتیاز کاربر : 27     رتبه کاربر : 26
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 10239
هوش مصنوعی

پاسخ هوش مصنوعی

برای اعتبارسنجی کد ملی در ASP.NET Core با استفاده از عبارات باقاعده، شما می توانید از کلاس RegularExpressionAttribute استفاده کنید. در زیر یک نمونه کد برای پیاده سازی این نوع اعتبارسنجی آورده شده است:

using System.ComponentModel.DataAnnotations;

public class Person
{
    [Required(ErrorMessage = "کد ملی الزامی است")]
    [RegularExpression(@"^\d{10}$", ErrorMessage = "کد ملی باید 10 رقم باشد")]
    public string NationalCode { get; set; }
}

در این کد:

  • ویژگی RegularExpression برای بررسی اینکه کد ملی فقط شامل 10 رقم باشد استفاده شده است.
  • ویژگی Required برای اطمینان از ارایه کد ملی استفاده شده است.

سپس می توانید از این کلاس در کنترلر و ویو استفاده کنید. مثلا در کنترلر:

public IActionResult Create(Person person)
{
    if (ModelState.IsValid)
    {
        // ذخیره سازی اطلاعات در دیتابیس
    }
    return View(person);
}
به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
هوش مصنوعی

پاسخ هوش مصنوعی

برای اعتبارسنجی کد ملی در ASP.NET Core با استفاده از عبارات باقاعده، می توانید از کلاس Regex در فضای نام System.Text.RegularExpressions استفاده کنید. در زیر یک مثال ساده آورده شده است:

using System;
using System.Text.RegularExpressions;

public class NationalCodeValidator
{
    public static bool IsValid(string nationalCode)
    {
        // الگوی عبارات باقاعده برای کد ملی 
        string pattern = @"^\d{10}$";
        return Regex.IsMatch(nationalCode, pattern);
    }
}

در این مثال، تابع IsValid یک رشته به عنوان ورودی می گیرد و بررسی می کند که آیا این رشته شامل 10 رقم است یا خیر. شما می توانید این تابع را قبل از ذخیره کد ملی در دیتابیس فراخوانی کنید.

به عنوان مثال، برای استفاده از این تابع:

string nationalCode = "1234567890";
bool isValid = NationalCodeValidator.IsValid(nationalCode);

if (isValid)
{
    // کد ملی معتبر است و می توانید آن را ذخیره کنید
}
else
{
    // کد ملی نامعتبر است و باید خطا نمایش دهید
}

اطمینان حاصل کنید که این اعتبارسنجی را با دیگر مباحث اعتبارسنجی نیز ترکیب کنید تا از معتبر بودن کد ملی اطمینان حاصل کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 12:18 1399/12/25

کد ملی یه فرمول داره. بنابراین برای اینکه صحت کد ملی رو بررسی کنید باید شماره ملی رو در فرمول بذارید و ببینید درست هست یا نه. از عبارات با قاعده برای بررسی صحت فرمت رشته ها استفاده میشه نه برای پیاده سازی فرمول.

کد ملی یه رشته 10 کاراکتری هست که اگر بخواید توسط عبارات با قاعده بررسیش کنید باید بررسی کنید که یک رشته 10 کاراکتری داشته باشید که فقط هم شامل عدد هست. همین !

""^(?!(\d)\1{9})\d{10}$"

یا عبارت زیر هم میتونید استفاده کنید که فقط بررسی 10 رقمه بودن هست.

^([0-9]){10}$

 

فرمول بررسی کد ملی در سی شارپ

   try
            {
                char[] chArray = this.textBox1.Text.ToCharArray();
                int[] numArray = new int[chArray.Length];
                for (int i = 0; i < chArray.Length; i++)
                {
                    numArray[i] = (int)char.GetNumericValue(chArray[i]);
                }
                int num2 = numArray[9];
                switch (this.textBox1.Text)
                {
                    case "0000000000":
                    case "1111111111":
                    case "22222222222":
                    case "33333333333":
                    case "4444444444":
                    case "5555555555":
                    case "6666666666":
                    case "7777777777":
                    case "8888888888":
                    case "9999999999":
                        MessageBox.Show("کد ملی وارد شده صحیح نمی باشد");
                        break;
                }
                int num3 = ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + (numArray[8] * 2);
                int num4 = num3 - ((num3 / 11) * 11);
                if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))))
                {
                    MessageBox.Show("کد ملی صحیح می باشد");
                }
                else
                {
                    MessageBox.Show("کد ملی نامعتبر است");
                }
            }
            catch (Exception)
            {
                MessageBox.Show("لطفا یک عدد 10 رقمی وارد کنید");
            }

فرمول کد ملی توی سی شارپ رو براتون قرار دادم. با کمی تغییرات به راحتی میتونید توی Asp هم استفاده کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود