Регуларни израз је низ знакова који формира образац за претрагу. Регуларни изрази се углавном користе за претраживање, валидацију и трансформацију текстова или стрингова.
Научите како да потврдите бројеве кредитних картица као што су Мастерцард, Виса Цард и Америцан Екпресс помоћу регуларних израза.
Када користити РегЕк за валидацију броја кредитне картице?
Услуге треће стране наплаћују сваки покушај трансакције. Било да је трансакција успешна или не, потребно је да платите трошкове. У таквим случајевима желите да одбијете бројеве кредитних картица који су очигледно неважећи. Можете брзо да потврдите бројеве кредитних картица користећи регуларне изразе.
Али не можете се у потпуности ослонити на валидацију регуларног израза за своју функцију плаћања. Издавачи картица редовно мењају обрасце бројева картица (уводећи нове обрасце или повлачећи старе), тако да метода редовног израза није најробустније решење. Иако можете покушати да пратите шаблоне картица из извора као што је Википедиа који се често ажурира.
Такође можете да користите регек да бисте брзо пронашли марку картице коју можете користити за приказ логотипа или налепница.
Регуларни изрази имају неколико практичних случајева употребе. Линук команда греп је вероватно најчешћи случај практичне употребе редовног израза.
Код који се користи у овом пројекту доступан је у а ГитХуб спремиште и бесплатан је за коришћење под МИТ лиценцом.
РегЕк за проверу броја Мастерцард
Мастерцард број је важећи ако испуњава следеће услове:
- Стринг не би требало да садржи никакве посебне знакове, абецеде или размаке.
- Број знакова мора бити једнак 16.
- Низ треба да почиње или са 2-цифреним опсегом бројева (у распону од 51 до 55) или 4-цифреним опсегом бројева (у распону од 2221 до 2720).
- Ако низ почиње са двоцифреним опсегом бројева (у распону од 51 до 55), следећих 14 цифара мора бити број између 0 и 9.
- Ако низ почиње са 4-цифреним опсегом бројева (у распону од 2221 до 2720), следећих 12 цифара мора бити број између 0 и 9.
Следећи регуларни израз задовољава горенаведене услове и може да потврди број Мастерцард картице:
^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\д|2[3-6]\\д{2}|27[ 0-1]\\д|2720)[0-9]{12}$
Ако вам не одговара горњи израз, погледајте водич за почетнике за регуларне изразе први.
Можете да користите горњи регуларни израз да потврдите Мастерцард број на било ком програмском језику. Ево како то учинити у Питхон-у:
увоз ре
дефцхецкМастерЦардНо(број карте):
регек = "^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\д|2[3-6]\\д{2}|27[ 0-1]\\д|2720)[0-9]{12}$"
р = ре.цомпиле (регек)ако (ре.Претрага(р, број карте)):
штампа ("Валид")
друго:
штампа ("Не важи")цард1 = "5110762060017101"
цхецкМастерЦардНо (картица1)
цард2 = "8632458236982734"
цхецкМастерЦардНо (цард2)
Покретање овог кода ће потврдити да је први број важећи, али други није:
РегЕк за проверу броја Виса картице
Број Виса картице је важећи ако испуњава следеће услове:
- Стринг не би требало да садржи никакве посебне знакове, абецеде или размаке.
- Низ треба да почиње са 4.
- Број знакова мора бити једнак 13 или 16. Старе виса картице имају 13 карактера, а нове 16 карактера.
- Ако је број знакова једнак 13, последњих 12 цифара морају бити број између 0 и 9.
- Ако је број знакова једнак 16, последњих 15 цифара мора бити број између 0 и 9.
Следећи регуларни израз испуњава горенаведене услове и можете га користити да потврдите број Виса картице:
^4[0-9]{12}(?:[0-9]{3})?$
Испод је Питхон приступ за валидацију броја Виса картице:
увоз ре
дефцхецкВисаЦардНо(број карте):
регек = "^4[0-9]{12}(?:[0-9]{3})?$"
р = ре.цомпиле (регек)ако (ре.Претрага(р, број карте)):
штампа ("Валид")
друго:
штампа ("Не важи")цард1 = "4539890694174109"
цхецкВисаЦардНо (цард1)
цард2 = "49237429498"
цхецкВисаЦардНо (цард2)
Опет, излаз потврђује да је први број важећи док је други неважећи:
РегЕк за потврду броја Америцан Екпресс картице
Број Америцан Екпресс картице је важећи ако испуњава следеће услове:
- Стринг не би требало да садржи никакве посебне знакове, абецеде или размаке.
- Овај број знакова мора бити једнак 15.
- Низ треба да почиње са 34 или 37.
- Последњих 13 цифара мора бити број између 0 и 9.
Следећи регуларни израз испуњава горенаведене услове и можете га користити да потврдите број Америцан Екпресс картице:
^3[47][0-9]{13}$
Можете да потврдите број Америцан Екпресс картице користећи следећи Питхон код:
увоз ре
дефцхецкАмерицанЕкпрессЦардНо(број карте):
регек = "^3[47][0-9]{13}$"
р = ре.цомпиле (регек)ако (ре.Претрага(р, број карте)):
штампа ("Валид")
друго:
штампа ("Не важи")цард1 = "372831730491196"
цхецкАмерицанЕкпрессЦардНо (цард1)
цард2 = "84732593847743042"
цхецкАмерицанЕкпрессЦардНо (цард2)
Још једном, излаз потврђује да је први број важећи, али је други неважећи:
Примене регуларних израза
Можете користити неке прилично једноставне регуларне изразе да потврдите уобичајене бројеве кредитних картица. РегЕк је моћан алат који можете да користите за претходну обраду података, упаривање шаблона, екстракцију података, лексичку анализу, обраду природног језика, гребање веба и још много тога. Такође можете да користите регуларне изразе у веб развоју за руковање валидацијом ХТМЛ образаца.