خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

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

یک عبارت منظم، دنباله ای از کاراکترها است که یک الگوی جستجو را تشکیل می دهد. عبارات منظم عمدتاً برای جستجو، اعتبارسنجی و تبدیل متون یا رشته ها استفاده می شود.

یک عبارت منظم، دنباله ای از کاراکترها است که یک الگوی جستجو را تشکیل می دهد. عبارات منظم عمدتاً برای جستجو، اعتبارسنجی و تبدیل متون یا رشته ها استفاده می شود.

بیاموزید که چگونه شماره‌های کارت اعتباری مانند Mastercard، Visa Card و American Express را با عبارات منظم تأیید کنید.

چه زمانی از RegEx برای اعتبارسنجی شماره کارت اعتباری استفاده کنیم؟

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

اما نمی‌توانید برای ویژگی پرداخت خود کاملاً به اعتبار سنجی عبارت منظم اعتماد کنید. صادرکنندگان کارت به طور منظم الگوهای شماره کارت خود را تغییر می دهند (معرفی الگوهای جدید یا برداشتن الگوهای قدیمی)، بنابراین روش regex قوی ترین راه حل نیست. اگرچه می‌توانید الگوهای کارت را از منبعی مانند ویکی‌پدیا که اغلب به‌روزرسانی می‌شود، حفظ کنید.

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

عبارات منظم چندین مورد کاربرد عملی دارند. دستور grep لینوکس احتمالا رایج ترین مورد استفاده عملی از regex است.

کد مورد استفاده در این پروژه در a موجود است
مخزن GitHub
و استفاده از آن تحت مجوز MIT برای شما رایگان است.

مطلب مرتبط:   توضیح حرکت بازیکن در یونیتی: بدن صلب و برخورد دهنده

RegEx برای اعتبارسنجی شماره Mastercard

شماره مسترکارت در صورتی معتبر است که شرایط زیر را داشته باشد:

  1. رشته نباید دارای هیچ کاراکتر، حروف الفبا یا فضای خالی خاصی باشد.
  2. تعداد کاراکترها باید برابر با 16 باشد.
  3. رشته باید با یک محدوده اعداد 2 رقمی (از 51 تا 55) یا یک محدوده اعداد 4 رقمی (از 2221 تا 2720) شروع شود. اگر رشته با محدوده اعداد 2 رقمی (از 51 تا 55) شروع می شود، 14 رقم بعدی باید عددی بین 0 تا 9 باشد. اگر رشته با محدوده اعداد 4 رقمی شروع می شود (از 2221 تا 2720) ، 12 رقم بعدی باید عددی بین 0 تا 9 باشد.
  • اگر رشته با محدوده اعداد 2 رقمی (از 51 تا 55) شروع شود، 14 رقم بعدی باید عددی بین 0 تا 9 باشد.
  • اگر رشته با محدوده اعداد 4 رقمی (از 2221 تا 2720) شروع شود، 12 رقم بعدی باید عددی بین 0 تا 9 باشد.

Regex زیر شرایط فوق را برآورده می کند و می تواند یک شماره Mastercard را تأیید کند:

^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[0-1]\\d|2720)[0-9]{12}$

اگر با عبارت فوق راحت نیستید، ابتدا یک راهنمای مبتدی برای عبارات منظم را بررسی کنید.

می توانید از regex بالا برای اعتبارسنجی شماره Mastercard در هر زبان برنامه نویسی استفاده کنید. در اینجا نحوه انجام این کار در پایتون آمده است:

import re
 
def checkMasterCardNo(cardNo):
    regex = "^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[0-1]\\d|2720)[0-9]{12}$"
    r = re.compile(regex)
 
    if (re.search(r, cardNo)):
        print("Valid")
    else:
        print("Not Valid")
 
card1 = "5110762060017101"
checkMasterCardNo(card1)
 
card2 = "8632458236982734"
checkMasterCardNo(card2)

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

مطلب مرتبط:   نحوه عبور از درخت جستجوی باینری

خروجی کد ترمینال مستر کارت

RegEx برای اعتبارسنجی شماره ویزا کارت

شماره ویزا کارت در صورتی معتبر است که شرایط زیر را داشته باشد:

  1. رشته نباید دارای هیچ کاراکتر، حروف الفبا یا فضای خالی خاصی باشد.
  2. رشته باید با 4 شروع شود.
  3. تعداد کاراکترها باید برابر با 13 یا 16 باشد. ویزا کارت های قدیمی 13 کاراکتر و کارت های جدید 16 کاراکتر دارند. اگر تعداد کاراکترها برابر با 13 باشد، 12 رقم آخر باید عددی بین 0 تا 9 باشد و اگر تعداد کاراکترها برابر با 16 باشد، 15 رقم آخر باید عددی بین 0 تا 9 باشد.
  • اگر تعداد کاراکترها برابر با 13 باشد، 12 رقم آخر باید عددی بین 0 تا 9 باشد.
  • اگر تعداد کاراکترها برابر با 16 باشد، 15 رقم آخر باید عددی بین 0 تا 9 باشد.

Regex زیر شرایط فوق را برآورده می کند و می توانید از آن برای اعتبارسنجی شماره ویزا کارت استفاده کنید:

^4[0-9]{12}(?:[0-9]{3})?$

در زیر روش پایتون برای اعتبارسنجی شماره ویزا کارت آمده است:

import re
 
def checkVisaCardNo(cardNo):
    regex = "^4[0-9]{12}(?:[0-9]{3})?$"
    r = re.compile(regex)
 
    if (re.search(r, cardNo)):
        print("Valid")
    else:
        print("Not Valid")
 
card1 = "4539890694174109"
checkVisaCardNo(card1)
 
card2 = "49237429498"
checkVisaCardNo(card2)

باز هم، خروجی تایید می کند که عدد اول معتبر است در حالی که عدد دوم نامعتبر است:

خروجی کد ترمینال ویساکارد

RegEx برای اعتبارسنجی شماره کارت American Express

شماره کارت American Express در صورتی معتبر است که شرایط زیر را داشته باشد:

  1. رشته نباید دارای هیچ کاراکتر، حروف الفبا یا فضای خالی خاصی باشد.
  2. این تعداد کاراکتر باید برابر با 15 باشد.
  3. رشته باید با 34 یا 37 شروع شود.
  4. 13 رقم آخر باید عددی بین 0 تا 9 باشد.
مطلب مرتبط:   12 مهارت برای یادگیری تبدیل شدن به یک توسعه دهنده کامل

Regex زیر شرایط فوق را برآورده می کند و می توانید از آن برای اعتبارسنجی شماره کارت American Express استفاده کنید:

^3[47][0-9]{13}$

می توانید شماره کارت American Express را با استفاده از کد پایتون زیر تأیید کنید:

import re
 
def checkAmericanExpressCardNo(cardNo):
    regex = "^3[47][0-9]{13}$"
    r = re.compile(regex)
 
    if (re.search(r, cardNo)):
        print("Valid")
    else:
        print("Not Valid")
 
card1 = "372831730491196"
checkAmericanExpressCardNo(card1)
 
card2 = "84732593847743042"
checkAmericanExpressCardNo(card2)

یک بار دیگر، خروجی تایید می کند که عدد اول معتبر است، اما عدد دوم نامعتبر است:

خروجی کد ترمینال آمریکایی اکسپرس

کاربرد عبارات منظم

شما می توانید از مقداری regex نسبتاً ساده برای اعتبارسنجی شماره های کارت اعتباری رایج استفاده کنید. RegEx ابزار قدرتمندی است که می‌توانید برای پیش‌پردازش داده‌ها، تطبیق الگو، استخراج داده‌ها، تحلیل واژگانی، پردازش زبان طبیعی، خراش‌های وب و موارد دیگر از آن استفاده کنید. شما همچنین می توانید از عبارات منظم در توسعه وب برای رسیدگی به اعتبار سنجی فرم های HTML استفاده کنید.