Ինչպես վավերացնել կրեդիտ քարտի համարները՝ օգտագործելով կանոնավոր արտահայտություններ
Կանոնավոր արտահայտությունները կատարյալ գործիք են ձևաչափերը վավերացնելու համար պարզ, լավ սահմանված կանոններով, ինչպիսիք են վարկային քարտերի համարները:
Կանոնավոր արտահայտությունը նիշերի հաջորդականությունն է, որը կազմում է որոնման օրինաչափություն: Կանոնավոր արտահայտությունները հիմնականում օգտագործվում են տեքստերի կամ տողերի որոնման, վավերացման և փոխակերպման համար:
Իմացեք, թե ինչպես վավերացնել կրեդիտ քարտերի համարները, ինչպիսիք են Mastercard-ը, Visa Card-ը և American Express-ը կանոնավոր արտահայտություններով:
Ե՞րբ օգտագործել RegEx վարկային քարտի համարը վավերացնելու համար:
Երրորդ կողմի ծառայությունները գանձում են յուրաքանչյուր գործարքի փորձի համար: Անկախ նրանից, թե գործարքը հաջող է, թե ոչ, դուք պետք է վճարեք վճարները: Նման դեպքերում դուք ցանկանում եք մերժել վարկային քարտերի համարները, որոնք ակնհայտորեն անվավեր են: Դուք կարող եք արագ հաստատել կրեդիտ քարտի համարները՝ օգտագործելով սովորական արտահայտություններ:
Բայց դուք չեք կարող լիովին ապավինել ձեր վճարման գործառույթի կանոնավոր արտահայտությունների վավերացմանը: Քարտ թողարկողները կանոնավոր կերպով փոխում են իրենց քարտի համարների օրինաչափությունները (ներկայացնելով նոր օրինակներ կամ հանելով հինները), ուստի ռեգեքսի մեթոդը ամենահուսալի լուծումը չէ: Չնայած դուք կարող եք փորձել պահել քարտի ձևանմուշները այնպիսի աղբյուրից, ինչպիսին Վիքիպեդիան է, որը հաճախ թարմացվում է:
Կարող եք նաև օգտագործել regex քարտի ապրանքանիշը արագ գտնելու համար, որն այնուհետև կարող եք օգտագործել լոգոները կամ պիտակները ցուցադրելու համար:
Կանոնավոր արտահայտություններն ունեն մի քանի գործնական օգտագործման դեպքեր: Linux grep հրամանը, հավանաբար, regex-ի ամենատարածված գործնական օգտագործման դեպքն է:
Այս նախագծում օգտագործվող կոդը հասանելի է GitHub-ի պահոցում և անվճար է MIT լիցենզիայի ներքո օգտագործելու համար:
RegEx Mastercard-ի համարը վավերացնելու համար
Mastercard համարը վավեր է, եթե այն բավարարում է հետևյալ պայմաններին.
- Տողը չպետք է պարունակի հատուկ նիշեր, այբուբեններ կամ բացատներ:
- Նիշերի թիվը պետք է հավասար լինի 16-ի:
Տողը պետք է սկսվի կամ երկնիշ թվային միջակայքից (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 համարը վավեր է, եթե այն բավարարում է հետևյալ պայմաններին.
- Տողը չպետք է պարունակի հատուկ նիշեր, այբուբեններ կամ բացատներ:
- Շարանը պետք է սկսվի 4-ով:
Նիշերի թիվը պետք է հավասար լինի 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 քարտի համարը վավեր է, եթե այն բավարարում է հետևյալ պայմաններին.
- Տողը չպետք է պարունակի հատուկ նիշեր, այբուբեններ կամ բացատներ:
- Նիշերի այս թիվը պետք է հավասար լինի 15-ի:
- Տողը պետք է սկսվի 34-ով կամ 37-ով:
- Վերջին 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 ձևերի վավերացման համար: