Įprasta išraiška yra simbolių seka, kuri sudaro paieškos šabloną. Reguliarios išraiškos dažniausiai naudojamos ieškant, tikrinant ir transformuojant tekstus ar eilutes.

Sužinokite, kaip patvirtinti kredito kortelių numerius, pvz., „Mastercard“, „Visa Card“ ir „American Express“, naudojant reguliariąsias išraiškas.

Kada naudoti RegEx kredito kortelės numeriui patvirtinti?

Trečiosios šalies paslaugos apmokestinamos už kiekvieną bandymą atlikti operaciją. Nesvarbu, ar sandoris sėkmingas, ar ne, turite sumokėti mokesčius. Tokiais atvejais norite atmesti kredito kortelių numerius, kurie aiškiai neteisingi. Galite greitai patvirtinti kredito kortelių numerius naudodami įprastus posakius.

Tačiau jūs negalite visiškai pasikliauti savo mokėjimo funkcijos reguliariųjų reiškinių patvirtinimu. Kortelių išdavėjai reguliariai keičia savo kortelių numerių šablonus (įveda naujus modelius arba panaikina senus), todėl reguliariosios išraiškos metodas nėra pats patikimiausias sprendimas. Nors galite pabandyti išlaikyti kortelių modelius iš tokio šaltinio kaip Vikipedija kuri dažnai atnaujinama.

instagram viewer

Taip pat galite naudoti regex, kad greitai rastumėte kortelės prekės ženklą, kurį galėsite naudoti logotipams ar etiketėms rodyti.

Reguliarūs posakiai turi keletą praktinio naudojimo atvejų. Linux grep komanda yra turbūt labiausiai paplitęs praktinis regex naudojimo atvejis.

Šiame projekte naudojamas kodas yra a GitHub saugykla ir jūs galite nemokamai naudotis pagal MIT licenciją.

RegEx, kad patvirtintų Mastercard numerį

Mastercard numeris galioja, jei jis atitinka šias sąlygas:

  1. Eilėje neturi būti jokių specialiųjų simbolių, abėcėlių ar tarpų.
  2. Simbolių skaičius turi būti lygus 16.
  3. Eilutė turi prasidėti 2 skaitmenų skaičių diapazonu (nuo 51 iki 55) arba 4 skaitmenų skaičių diapazonu (nuo 2221 iki 2720).
    • Jei eilutė prasideda 2 skaitmenų skaičių diapazonu (nuo 51 iki 55), kiti 14 skaitmenų turi būti skaičiai nuo 0 iki 9.
    • Jei eilutė prasideda 4 skaitmenų skaičių diapazonu (nuo 2221 iki 2720), kiti 12 skaitmenų turi būti skaičiai nuo 0 iki 9.

Ši reguliarioji išraiška atitinka aukščiau nurodytas sąlygas ir gali patvirtinti Mastercard numerį:

^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}$

Jei nesate patenkinti aukščiau pateikta išraiška, patikrinkite pradedančiųjų reguliarių posakių vadovas Pirmas.

Galite naudoti aukščiau pateiktą reguliarųjį reiškinį, kad patvirtintumėte Mastercard numerį bet kuria programavimo kalba. Štai kaip tai padaryti Python:

importuoti re

defcheckMasterCardNr(kortelės Nr):
reguliarioji išraiška = "^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 = iš naujo.kompiliuoti (regex)

jeigu (re.Paieška(r, kortelės Nr)):
spausdinti ("Galioja")
Kitas:
spausdinti ("Negaliojantis")

kortelė1 = "5110762060017101"
checkMasterCardNo (card1)

kortelė2 = "8632458236982734"
checkMasterCardNo (card2)

Vykdydami šį kodą patvirtinsite, kad pirmasis numeris galioja, o antrasis – ne:

RegEx, kad patvirtintumėte „Visa“ kortelės numerį

Visa kortelės numeris galioja, jei jis atitinka šias sąlygas:

  1. Eilėje neturi būti jokių specialiųjų simbolių, abėcėlių ar tarpų.
  2. Eilutė turėtų prasidėti 4.
  3. Simbolių skaičius turi būti lygus 13 arba 16. Senosios vizos kortelės turi 13 simbolių, o naujos - 16 simbolių.
    • Jei simbolių skaičius yra 13, paskutiniai 12 skaitmenų turi būti skaičiai nuo 0 iki 9.
    • Jei simbolių skaičius yra 16, paskutiniai 15 skaitmenų turi būti skaičiai nuo 0 iki 9.

Ši reguliarioji išraiška atitinka aukščiau nurodytas sąlygas ir galite ją naudoti norėdami patvirtinti „Visa“ kortelės numerį:

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

Toliau pateikiamas „Python“ metodas „Visa“ kortelės numerio patvirtinimui:

importuoti re

defcheckVisaCardNr(kortelės Nr):
reguliarioji išraiška = "^4[0-9]{12}(?:[0-9]{3})?$"
r = iš naujo.kompiliuoti (regex)

jeigu (re.Paieška(r, kortelės Nr)):
spausdinti ("Galioja")
Kitas:
spausdinti ("Negaliojantis")

kortelė1 = "4539890694174109"
checkVisaCardNo (card1)

kortelė2 = "49237429498"
checkVisaCardNo (card2)

Vėlgi, išvestis patvirtina, kad pirmasis skaičius galioja, o antrasis yra neteisingas:

RegEx, kad patvirtintumėte American Express kortelės numerį

American Express kortelės numeris galioja, jei jis atitinka šias sąlygas:

  1. Eilėje neturi būti jokių specialiųjų simbolių, abėcėlių ar tarpų.
  2. Šis simbolių skaičius turi būti lygus 15.
  3. Eilutė turi prasidėti 34 arba 37.
  4. Paskutiniai 13 skaitmenų turi būti skaičiai nuo 0 iki 9.

Ši reguliarioji išraiška atitinka aukščiau nurodytas sąlygas ir galite ją naudoti patvirtindami American Express kortelės numerį:

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

Galite patvirtinti American Express kortelės numerį naudodami šį Python kodą:

importuoti re

defpatikrintiAmericanExpressCardNr(kortelės Nr):
reguliarioji išraiška = "^3[47][0-9]{13}$"
r = iš naujo.kompiliuoti (regex)

jeigu (re.Paieška(r, kortelės Nr)):
spausdinti ("Galioja")
Kitas:
spausdinti ("Negaliojantis")

kortelė1 = "372831730491196"
checkAmericanExpressCardNo (card1)

kortelė2 = "84732593847743042"
checkAmericanExpressCardNo (card2)

Dar kartą išvestis patvirtina, kad pirmasis skaičius galioja, bet antrasis neteisingas:

Reguliariųjų reiškinių taikymas

Norėdami patvirtinti įprastus kredito kortelių numerius, galite naudoti gana paprastą reguliarųjį reiškinį. RegEx yra galingas įrankis, kurį galite naudoti išankstiniam duomenų apdorojimui, šablonų derinimui, duomenų išgavimui, leksinei analizei, natūralios kalbos apdorojimui, žiniatinklio rinkimui ir kt. Taip pat galite naudoti reguliariąsias išraiškas žiniatinklio kūrime, kad galėtumėte tikrinti HTML formas.