Ինչպես վավերացնել կրեդիտ քարտի համարները՝ օգտագործելով կանոնավոր արտահայտություններ


Կանոնավոր արտահայտությունները կատարյալ գործիք են ձևաչափերը վավերացնելու համար պարզ, լավ սահմանված կանոններով, ինչպիսիք են վարկային քարտերի համարները:

Կանոնավոր արտահայտությունը նիշերի հաջորդականությունն է, որը կազմում է որոնման օրինաչափություն: Կանոնավոր արտահայտությունները հիմնականում օգտագործվում են տեքստերի կամ տողերի որոնման, վավերացման և փոխակերպման համար:

Իմացեք, թե ինչպես վավերացնել կրեդիտ քարտերի համարները, ինչպիսիք են Mastercard-ը, Visa Card-ը և American Express-ը կանոնավոր արտահայտություններով:

Ե՞րբ օգտագործել RegEx վարկային քարտի համարը վավերացնելու համար:

Երրորդ կողմի ծառայությունները գանձում են յուրաքանչյուր գործարքի փորձի համար: Անկախ նրանից, թե գործարքը հաջող է, թե ոչ, դուք պետք է վճարեք վճարները: Նման դեպքերում դուք ցանկանում եք մերժել վարկային քարտերի համարները, որոնք ակնհայտորեն անվավեր են: Դուք կարող եք արագ հաստատել կրեդիտ քարտի համարները՝ օգտագործելով սովորական արտահայտություններ:

Բայց դուք չեք կարող լիովին ապավինել ձեր վճարման գործառույթի կանոնավոր արտահայտությունների վավերացմանը: Քարտ թողարկողները կանոնավոր կերպով փոխում են իրենց քարտի համարների օրինաչափությունները (ներկայացնելով նոր օրինակներ կամ հանելով հինները), ուստի ռեգեքսի մեթոդը ամենահուսալի լուծումը չէ: Չնայած դուք կարող եք փորձել պահել քարտի ձևանմուշները այնպիսի աղբյուրից, ինչպիսին Վիքիպեդիան է, որը հաճախ թարմացվում է:

Կարող եք նաև օգտագործել regex քարտի ապրանքանիշը արագ գտնելու համար, որն այնուհետև կարող եք օգտագործել լոգոները կամ պիտակները ցուցադրելու համար:

Կանոնավոր արտահայտություններն ունեն մի քանի գործնական օգտագործման դեպքեր: Linux grep հրամանը, հավանաբար, regex-ի ամենատարածված գործնական օգտագործման դեպքն է:

Այս նախագծում օգտագործվող կոդը հասանելի է GitHub-ի պահոցում և անվճար է MIT լիցենզիայի ներքո օգտագործելու համար:

RegEx Mastercard-ի համարը վավերացնելու համար

Mastercard համարը վավեր է, եթե այն բավարարում է հետևյալ պայմաններին.

  1. Տողը չպետք է պարունակի հատուկ նիշեր, այբուբեններ կամ բացատներ:
  2. Նիշերի թիվը պետք է հավասար լինի 16-ի:
  3. Տողը պետք է սկսվի կամ երկնիշ թվային միջակայքից (51-ից 55-ը տատանվում է) կամ 4-նիշ թվերի միջակայքով (2221-ից մինչև 2720):

    • Եթե տողը սկսվում է երկնիշ թվային տիրույթով (51-ից մինչև 55), ապա հաջորդ 14 նիշերը պետք է լինեն 0-ից 9-ի միջև ընկած թիվ:
    • Եթե տողը սկսվում է 4 նիշանոց թվային տիրույթով (2221-ից մինչև 2720), ապա հաջորդ 12 նիշերը պետք է լինեն 0-ից 9-ի միջև ընկած թիվ:

Հետևյալ ռեգեքսը բավարարում է վերը նշված պայմաններին և կարող է վավերացնել 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}$

Եթե ձեզ դուր չի գալիս վերը նշված արտահայտությունը, նախ ստուգեք սովորական արտահայտությունների ուղեցույցը:

Դուք կարող եք օգտագործել վերը նշված ռեգեքսը Mastercard-ի համարը ցանկացած ծրագրավորման լեզվով հաստատելու համար: Ահա թե ինչպես դա անել Python-ում.

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 վիզա քարտի համարը վավերացնելու համար

Visa Card համարը վավեր է, եթե այն բավարարում է հետևյալ պայմաններին.

  1. Տողը չպետք է պարունակի հատուկ նիշեր, այբուբեններ կամ բացատներ:
  2. Շարանը պետք է սկսվի 4-ով:
  3. Նիշերի թիվը պետք է հավասար լինի 13-ի կամ 16-ի: Հին վիզա քարտերն ունեն 13 նիշ, իսկ նորերը՝ 16 նիշ:

    • Եթե նիշերի թիվը հավասար է 13-ի, ապա վերջին 12 թվանշանները պետք է լինեն 0-ից 9-ի միջև ընկած թիվ:
    • Եթե նիշերի թիվը հավասար է 16-ի, ապա վերջին 15 թվանշանները պետք է լինեն 0-ից 9-ի միջև ընկած թիվ:

Հետևյալ ռեգեքսը բավարարում է վերը նշված պայմաններին, և դուք կարող եք այն օգտագործել Visa Card համարը վավերացնելու համար.

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

Ստորև բերված է Python մոտեցումը Visa Card համարը վավերացնելու համար.

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-ի միջև ընկած թիվ:

Հետևյալ ռեգեքսը բավարարում է վերը նշված պայմաններին, և դուք կարող եք այն օգտագործել American Express քարտի համարը վավերացնելու համար.

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

Դուք կարող եք վավերացնել American Express քարտի համարը՝ օգտագործելով հետևյալ Python կոդը.

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-ը հզոր գործիք է, որը կարող եք օգտագործել տվյալների նախնական մշակման, օրինաչափությունների համապատասխանության, տվյալների արդյունահանման, բառապաշարային վերլուծության, բնական լեզվի մշակման, վեբ քերման և այլնի համար: Դուք կարող եք նաև սովորական արտահայտություններ օգտագործել վեբ մշակման մեջ՝ HTML ձևերի վավերացման համար: