Komputer, Programming
PHP (èksprèsi regular) - apa iku? Conto lan mriksa biasa ungkapan
Nalika nggarap teks ing program basa modern, gawe saya ketemu karo dislametaké saka Validation input kanggo tundhuk marang pola dikarepake, golèk lan ngganti pecahan test lan jinis operasi proses informasi karakter. Mbangun kalkulus Validation dhewe ndadékaké kanggo mundhut saka wektu, kompatibilitas kode lan kerumitan ing pembangunan lan kasungsun.
Perkembangan saka basa Internet lan WEB-desain dibutuhake nitahaken saka liya Versatile lan kompak saka Processing teks karo jumlah minimal dibutuhake kanggo kode iki. Iku ora ana sing istiméwa lan misuwur ing kalangané wiwitan lan gawe profesional saka basa PHP. Ing basa expression biasa minangka cithakan teks kanggo menakake tugas nangani teks lan ngurangi code for puluhan lan atusan garis. Kathah masalah ora bisa ditanggulangi ing kabeh tanpa iku.
Expressions Reguler ing PHP
basa PHP wis telung mekanisme kanggo nggarap biasa ungkapan - «ereg», «mb_ereg» lan «preg». Sing paling umum yaiku antarmuka «preg», kang fungsi nyedhiyani akses menyang perpustakaan PCRE support expression biasa, sing dikembangaké kanggo basa Perl, kang kalebu ing paket PHP. Preg-seeking fungsi ing cocog senar teks diwenehi, miturut pola tartamtu ing basa biasa ungkapan.
Dasar sintaksis
Minangka bagéan saka artikel short iku mokal kanggo njlèntrèhaké kanthi rinci ing kabeh ukara expression biasa, iki ana sastra sing khusus. We saiki mung unsur utama kanggo nuduhake kesempatan kanggo pangembang lan ngerti conto kode.
Ing PHP expression biasa wis resmi ditetepake banget angel, lan mulane menakake gambaran. A expression biasa senar teks. Iku kasusun saka cithakan pamisah darmabakti lan tambahan nuduhake cara kanggo nangani iku. Bisa dilebokaké ing macem-macem alternatif lan repetitions saka pola.
Contone, ing expression / \ d {3} - \ d {2} - \ d {2} / m divider punika "/", ngiring dening cithakan, lan simbol «m» punika tambahan ing.
Kabeh daya ungkapan biasa dienkode nggunakake meta-karakter. The metacharacter basa utama backslash ing - "\". Iku owah-owahan ing jinis ing ngisor iki karakter ing ngelawan (IE. E. Diowahi menyang wildcard karakter biasa lan kosok balene). metacharacter penting baris terus «|», nemtokaken Cithakan alternatif. conto liyane saka meta-karakter:
| ^ | Mulai obyek utawa senar |
| ( | Mulai subpattern |
| ) | Akhir subpattern |
| { | Mulai quantifier |
| } | Akhir quantifier |
| \ d | digit desimal saka 0 nganti 9 |
| \ D | sembarang karakter sing ora nomer |
| \ s | simbol kosong, papan, tab, |
| \ w | simbol kamus |
PHP, proses biasa ungkapan, papan dianggep minangka karakter bener kapisah, supaya expression saka XYZ lan ABC ngendi sing beda.
subpatterns
Ing PHP subpatterns biasa dening kurung, sing biyasa disebut "subexpressions". Nindakake fungsi ing ngisor iki:
alternatif persediaan. Contone, pola panas (soko | Bird |) bertepatan karo tembung "panas", "Firebird" lan "panas". Lan tanpa kelompok iku mung bakal dadi senar kosong, "manuk" lan "panas".
"Biasa" subpattern. Iki tegese yen pola cocok substring, banjur ngasilake kabeh cocog. Kanggo kajelasan, kita menehi conto. Diwenehi èksprèsi regular ing ngisor iki: juara ditampa ((emas | linapis emas) (medali | tuwung)) - lan senar kanggo cocog, "juara nemu medali emas." Saliyane tembung dhisikan, asil panelusuran bakal ditanggepi: "Gold Medal", "medali", "mas".
Operators repetitions (kvadrifikatory)
Ing serat ing expression biasa asring perlu kanggo njelasno Ambalan nomer lan simbol. Iki ora masalah, yen ora akèh repetitions. Nanging apa apa nalika aku ora ngerti nomer sing pas? Ing kasus iki iku perlu nggunakake metacharacters khusus.
Kanggo gambaran saka repetitions digunakake kvadrifikatory - metacharacters kanggo nemtokake nomer. Kvadrifikatory sing rong jinis:
- umum ing kelompok;
- suda.
Sakabèhé quantifier kena dening nomer minimum lan maksimum unsur repetitions diijini ing wangun rong nomer ing penyonggo, kayata x {2,5}. Yen jumlah maksimum repetitions ora dikenal, ing kaping kalih ora kasebut: x {2}.
quantifiers disingkat simbul kanggo paling umum saka repetitions supaya supaya ukara overloading rasah. Biasane ana telung ngethok:
1. * - nul utawa liyane repetitions, kang padha karo {0,}.
2. + - siji utawa luwih repetitions, IE, {1} ...
3.? - nul utawa mung siji baleni - {0,1}.
conto èksprèsi regular
Kanggo sing sing sinau biasa ungkapan, conto - pakem paling. We menehi sawetara sing nuduhake kesempatan sing karo minimal saka gaweyan. Kabeh kode kanthi kompatibel karo versi PHP 4.x lan ndhuwur. Kanggo saestu mangertos ukara lan panggunaan saka kabeh fitur basa disaranake ing buku dening J .. Friedl, "biasa ungkapan", kang kebak dianggep sintaksis, lan ana conto biasa ungkapan ora mung PHP, nanging uga kanggo Python, Perl, MySQL, Jawa, Ruby, lan C #.
Validation E-mail address
Task. Ana sing kaca Internet ing kang Pengunjung wis dijaluk Alamat. expression biasa kudu mriksa bener saka alamat sadurunge ngirim pesen. Mriksa ora njamin yen kothak layang kasebut bener ana lan ditampa pesen. Nanging ganja metu alamat temenan salah iku bisa.
Kaputusan. Karo program basa, ing PHP verifikasi email-alamat èksprèsi regular dipun cara, lan conto ing artikel iki ora pilihan final lan mung. Mulane, ing saben cilik, kita bakal nyedhiyani dhaftar syarat sing kudu dijupuk menyang akun nalika program lan implementasine tartamtu gumantung tanggung ing pangembang.
Mangkono, ing expression sing tes email bener, kudu mriksa kahanan ing ngisor iki:
- Ing ngarsane ing wiwitan ing baris ing @ simbol, lan ora ana kesenjangan.
- The domain bagéan saka alamat simbol @, namung karakter bener kanggo jeneng domain. Padha ditrapake kanggo jeneng pangguna.
- Nalika mriksa jeneng panganggo perlu kanggo nemtokake ngarsane karakter khusus kayata apostrophe utawa baris vertikal. simbol kuwi potensi mbebayani lan bisa sing ing kuwi jinis serangan sing SQL-injeksi. Supaya alamat.
- jeneng panganggo ngidini mung siji titik, kang bisa uga ora karakter pisanan utawa pungkasan ing senar.
- Jeneng domain kudu ngemot paling sethithik rong lan ora luwih saka enem karakter.
Conto, njupuk menyang akun kabeh kahanan iki bisa katon ing tokoh punika.
Validation of URL
Task. Priksa manawa ing teks senar kasebut iku bener URL alamat. Sawise maneh, kita Wigati sing biasa ungkapan URL-pamriksa dipun macem-macem cara.
Kaputusan. versi final Kita minangka nderek:
/^(https?:\/\/)?([\da-z\.-]+)\.([az\.]{2,6})([\/\w \ .-] *) * \ /? $ /
Saiki njelasno sawijining komponen ing liyane rinci nggunakake drawing.
| pratelan 1 | Sadurunge URL ora kudu karakter sembarang |
| Telekomunikasi 2 | Priksa ngarsane ater-ater prentah «http» |
| item 3 | Ana kudu ora simbol |
| Telekomunikasi 4 | Yen ana «s», URL TCTerms kanggo sambungan aman «https» |
| Telekomunikasi 5 | bagean sing dibutuhake saka "//" |
| Telekomunikasi 6 | Ora karakter |
| p. 7-9 | Verifikasi domain tingkat pisanan lan ing ngarsane titik |
| p.10-13 | Verifikasi domain nulis tingkat kapindho lan titik |
| p.14-17 | URL struktur Gambar - pesawat saka nomer, huruf, underscores, dashes, titik, lan motong ing mburi |
Mriksa nomer kertu kredit
Task. Sampeyan perlu kanggo ngleksanakake Validation nomer kertu kredit ngetik saka sistem pembayaran paling umum. A varian mung kanggo kertu Visa lan MasterCard.
Kaputusan. Nalika nggawe ekspresi sampeyan kudu njupuk menyang akun ing ngarsane bisa kesenjangan ing kamar input. The digit ing peta sing dipérang dadi kelompok kanggo maca luwih gampang lan ndhikte. Mulane, iku alam sing wong bisa nyoba kanggo ngetik nomer ing cara iki (IE. E. Nggunakake spasi).
Nulis expression universal sing njupuk menyang akun spasi bisa utawa setrip, luwih rumit saka mung discard kabeh karakter kajaba digit. Mulane, disaranake nggunakake expression wildcard / D, kang mbusak kabeh karakter kajaba digit.
Saiki sampeyan bisa langsung menyang nomer mriksa. Kabeh perusahaan, sing ngetokake sekuritas kertu kredit nggunakake format nomer unik. Ing tuladha kang digunakake, lan klien ora perlu ngetik jeneng perusahaan - ditemtokake dening nomer. SIM Visa tansah didhisiki nomer 4 lan duwe dawa 13 utawa 16 digit. MasterCard wiwit ing sawetara 51-55 karo nomer dawa 16. Akibaté, kita njaluk expression ing ngisor iki:
Sadurunge proses supaya bisa luwih dites digit pungkasan nomer, kang wis diwilang ing algoritma Luhn.
Verifikasi nomer telpon
Task. Ngecek bener nomer telpon mlebu.
Kaputusan. Jumlah digit ing nomer telpon tetep lan seluler beda-beda banget gumantung negara, supaya universal mriksa nggunakake ungkapan biasa, nomer telpon bener mokal. Nanging nomer internasional duwe format ketat lan sampurna kanggo mriksa pola. Malah liyane supaya luwih lan luwih operator telpon nasional sing nyoba kanggo ketemu standar padha. struktur kamar iku minangka nderek:
+ CCC.NNNNNNNNNNxEEEE, ngendi:
- C - iku kode negara dumadi saka 1-3 digit.
- N - nomer nganti 14 digit.
- E - extension pilihan.
Plus iku sawijining unsur indispensable, lan tandha X saiki mung nalika needed extension.
Akibaté kita duwe expression ing ngisor iki:
^ \ + [0-9] {1,3 } \ [0-9] {4,14}. (:?. X +)? $
Angka ing sawetara
Task. Sampeyan perlu kanggo mesthekake ketepakan ongko saka sawetara tartamtu. Kajaba iku, iku perlu kanggo nemokake expression biasa mung nomer saka sawetara.
Kaputusan. Kene sawetara ungkapan kanggo sawetara kasus sing paling umum:
| Nemtokake jam saka 1 kanggo 24 | ^ (1 [0-2] | [1-9]) $ |
| Day ing sasi 1-31 | ^ (3 [01] | [12] [0-9] | [1-9]) $ |
| Detik utawa menit 0-59 | ^ [1-5]? [0-9] $ |
| A nomer saka 1 kanggo 100 | * (100 |? [1-9] [0-9]) $ |
| Day saka taun 1-366 | ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $ |
Search IP-alamat
Task. Sampeyan perlu kanggo nemtokake senar diwenehi punika IP-alamat bener ing format IPv4 ing sawetara saka 000.000.000.000-255.255.255.255.
Kaputusan. Gunane apa masalah ing basa PHP, ing expression biasa wis akeh varintov. Contone, iki:
pamriksa Online ungkapan
Priksa èksprèsi regular bener kanggo wiwitan bisa angel amarga saka kerumitan sintaks ing, kang bedo saka program basa "biasa". Kanggo ngatasi masalah iki, ana akeh Testers online ungkapan sing wis gampang kanggo mriksa bener saka cithakan sing digawe ing teks nyata. Programmer lumebu ing expression lan verifikasi data lan cepet ndeleng asil Processing. Biasane ana saiki bagean referensi, kang rincian ekspresi biasa, conto lan beda implementasine basa paling lengkap.
Nanging kanggo layanan online kanthi dateng asil ora dianjurake kanggo kabeh gawe sing nggunakake PHP. A expression biasa ditulis lan diverifikasi ing wong, ngundakake kualifikasi lan njamin anané kasalahan.
Similar articles
Trending Now