Regulārā izteiksme ir rakstzīmju secība, kas veido meklēšanas modeli. Regulārās izteiksmes galvenokārt tiek izmantotas tekstu vai virkņu meklēšanai, apstiprināšanai un pārveidošanai.

Uzziniet, kā ar regulārām izteiksmēm pārbaudīt kredītkaršu numurus, piemēram, Mastercard, Visa Card un American Express.

Kad izmantot RegEx, lai apstiprinātu kredītkartes numuru?

Trešās puses pakalpojumu maksa par katru darījuma mēģinājumu. Neatkarīgi no tā, vai darījums ir veiksmīgs vai nē, jums ir jāmaksā maksa. Šādos gadījumos vēlaties atteikt kredītkaršu numurus, kas nepārprotami ir nederīgi. Varat ātri pārbaudīt kredītkaršu numurus, izmantojot regulārās izteiksmes.

Taču jūs nevarat pilnībā paļauties uz regulārās izteiksmes apstiprināšanu jūsu maksājumu funkcijai. Karšu izsniedzēji regulāri maina savu karšu numuru modeļus (ievieš jaunus modeļus vai atceļ vecos), tāpēc regulārā izteiksmes metode nav stabilākais risinājums. Lai gan jūs varat mēģināt sekot karšu modeļiem no tāda avota kā Wikipedia kas tiek bieži atjaunināts.

instagram viewer

Varat arī izmantot regulāro izteiksmi, lai ātri atrastu kartes zīmolu, ko pēc tam varat izmantot, lai parādītu logotipus vai etiķetes.

Regulārām izteiksmēm ir vairāki praktiski lietojuma gadījumi. Linux grep komanda iespējams, ir visizplatītākais regulārā izteiksmes praktiskas lietošanas gadījums.

Šajā projektā izmantotais kods ir pieejams a GitHub repozitorijs un to varat izmantot bez maksas saskaņā ar MIT licenci.

RegEx, lai apstiprinātu Mastercard numuru

Mastercard numurs ir derīgs, ja tas atbilst šādiem nosacījumiem:

  1. Virknē nedrīkst būt īpašas rakstzīmes, alfabēts vai atstarpes.
  2. Rakstzīmju skaitam jābūt vienādam ar 16.
  3. Virknei jāsākas vai nu ar 2 ciparu skaitļu diapazonu (no 51 līdz 55), vai ar 4 ciparu skaitļu diapazonu (no 2221 līdz 2720).
    • Ja virkne sākas ar 2 ciparu skaitļu diapazonu (no 51 līdz 55), nākamajiem 14 cipariem ir jābūt cipariem no 0 līdz 9.
    • Ja virkne sākas ar 4 ciparu skaitļu diapazonu (no 2221 līdz 2720), nākamajiem 12 cipariem ir jābūt cipariem no 0 līdz 9.

Tālāk norādītais regulārā izteiksme atbilst iepriekš minētajiem nosacījumiem un var apstiprināt Mastercard numuru:

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

Ja jūs neapmierina iepriekš minētais izteiciens, pārbaudiet regulāro izteiksmju ceļvedis iesācējiem vispirms.

Varat izmantot iepriekš minēto regulāro izteiksmi, lai apstiprinātu Mastercard numuru jebkurā programmēšanas valodā. Lūk, kā to izdarīt Python:

imports re

defcheckMasterCardNr(kartes Nr):
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 = atkārtoti.kompilēšana (regulārais izteiksme)

ja (re.Meklēt(r, kartes Nr)):
drukāt ("Derīgs")
cits:
drukāt ("Nav derīga")

karte1 = "5110762060017101"
checkMasterCardNo (card1)

karte2 = "8632458236982734"
checkMasterCardNo (karte2)

Palaižot šo kodu, tiks apstiprināts, ka pirmais numurs ir derīgs, bet otrs nav:

RegEx, lai apstiprinātu Visa kartes numuru

Visa kartes numurs ir derīgs, ja tas atbilst šādiem nosacījumiem:

  1. Virknē nedrīkst būt īpašas rakstzīmes, alfabēts vai atstarpes.
  2. Virknei jāsākas ar 4.
  3. Rakstzīmju skaitam jābūt vienādam ar 13 vai 16. Vecajās vīzu kartēs ir 13 rakstzīmes, bet jaunajās - 16 rakstzīmes.
    • Ja rakstzīmju skaits ir vienāds ar 13, pēdējiem 12 cipariem ir jābūt cipariem no 0 līdz 9.
    • Ja rakstzīmju skaits ir vienāds ar 16, pēdējiem 15 cipariem ir jābūt cipariem no 0 līdz 9.

Šis regulārais izteiksmes veids atbilst iepriekš minētajiem nosacījumiem, un jūs varat to izmantot, lai apstiprinātu Visa kartes numuru:

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

Tālāk ir sniegta Python pieeja Visa kartes numura apstiprināšanai:

imports re

defpārbaudītVisaCardNr(kartes Nr):
regex = "^4[0-9]{12}(?:[0-9]{3})?$"
r = atkārtoti.kompilēšana (regulārais izteiksme)

ja (re.Meklēt(r, kartes Nr)):
drukāt ("Derīgs")
cits:
drukāt ("Nav derīga")

karte1 = "4539890694174109"
checkVisaCardNo (card1)

karte2 = "49237429498"
checkVisaCardNo (karte2)

Atkal izvade apstiprina, ka pirmais numurs ir derīgs, bet otrais ir nederīgs:

RegEx, lai apstiprinātu American Express kartes numuru

American Express kartes numurs ir derīgs, ja tas atbilst šādiem nosacījumiem:

  1. Virknē nedrīkst būt īpašas rakstzīmes, alfabēts vai atstarpes.
  2. Šim rakstzīmju skaitam ir jābūt vienādam ar 15.
  3. Virknei jāsākas ar 34 vai 37.
  4. Pēdējiem 13 cipariem ir jābūt cipariem no 0 līdz 9.

Šis regex atbilst iepriekš minētajiem nosacījumiem, un jūs varat to izmantot, lai apstiprinātu American Express kartes numuru:

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

Jūs varat apstiprināt American Express kartes numuru, izmantojot šādu Python kodu:

imports re

defpārbaudiet American ExpressCardNr(kartes Nr):
regex = "^3[47][0-9]{13}$"
r = atkārtoti.kompilēšana (regulārais izteiksme)

ja (re.Meklēt(r, kartes Nr)):
drukāt ("Derīgs")
cits:
drukāt ("Nav derīga")

karte1 = "372831730491196"
checkAmericanExpressCardNo (card1)

karte2 = "84732593847743042"
checkAmericanExpressCardNo (card2)

Vēlreiz izvade apstiprina, ka pirmais numurs ir derīgs, bet otrais ir nederīgs:

Regulāro izteiksmju pielietojumi

Lai apstiprinātu parastos kredītkaršu numurus, varat izmantot diezgan vienkāršu regulāro izteiksmi. RegEx ir jaudīgs rīks, ko varat izmantot datu pirmapstrādei, modeļu saskaņošanai, datu ieguvei, leksiskajai analīzei, dabiskās valodas apstrādei, tīmekļa kopēšanai un citiem. Varat arī izmantot regulārās izteiksmes tīmekļa izstrādē, lai apstrādātu HTML veidlapu validāciju.