KomputerProgramming

PHP (regex) - naon eta? Conto na mariksa ungkapan biasa

Waktu digawe make téks dina sagala basa programming modern, pamekar terus papanggih jeung tujuan validasi input pikeun patuh kana pola nu dipikahoyong, neangan sarta ngaganti popotongan test na tipe séjén operasi ngolah informasi karakter. Ngamekarkeun algoritma validasi sorangan ngabalukarkeun leungitna waktos, kasaluyuan kode jeung pajeulitna dina perkembangannya jeung modernisasi.

Ngembangkeun gancang sahiji basa Internet sarta wéb-design diperlukeun kreasi hartosna serbaguna na ci pamrosésan téks kalawan jumlah minimum diperlukeun pikeun kode ieu. Ieu aya iwal sarta mangrupakeun populer di kalangan beginners sarta pamekar profésional basa PHP. Bahasa ekspresi biasa salaku témplat téks pikeun simplify tugas nanganan téks jeung ngurangan kode keur puluhan jeung ratusan garis. Loba masalah teu bisa direngsekeun pisan tanpa eta.

Ungkapan biasa di PHP

basa PHP boga tilu mékanisme pikeun gawé bareng ungkapan biasa - «ereg», «mb_ereg» na «preg». Paling umum nyaeta antarbeungeut «preg», anu fungsi nyadiakeun aksés ka perpustakaan teh PCRE rojongan ekspresi biasa, asalna dimekarkeun pikeun basa Perl nu geus kaasup dina pakét PHP. Preg-néangan fungsi dina cocog string téks dibikeun, nurutkeun pola nu tangtu dina basa ungkapan biasa.

Dasar rumpaka

Salaku bagian tina hiji artikel pondok mustahil pikeun ngajelaskeun di jéntré sakabéh rumpaka ekspresi biasa, pikeun ieu aya hiji pustaka husus. Urang nampilkeun mung elemen utama pikeun némbongkeun kasempetan pikeun pamekar sareng ngartos conto kode.

Dina PHP ekspresi biasa sacara formal didefinisikeun hésé pisan, sahingga simplify katerangan. Hiji ungkapan biasa nyaéta string téks. Ieu ngawengku hiji template SEPARATOR dedicated sarta modifier nunjukkeun cara pikeun nanganan eta. Mungkin citakan dina rupa alternatif jeung pangulangan tina pola.

Contona, dina babasan / \ d {3} - \ d {2} - \ d {2} / m divider nyaeta "/", dituturkeun ku citakan, sarta simbol «m» nyaeta modifier jeung.

Sagala kakawasaan ungkapan biasa ieu disandikeun maké meta-karakter. The metacharacter basa utama backslash nu - "\". Ieu robah jinis handap karakter dina sabalikna (ie. E. dirobah jadi hiji bonus karakter biasa sabalikna). metacharacter penting séjénna nyaéta garis lempeng «|», hususna dina citakan alternatif. conto anu leuwih ti meta-karakter:

^ Mimitian obyék atawa string a
( mimitian subpattern
) tungtung subpattern
{ mimitian quantifier
} tungtung quantifier
\ d angka decimal ti 0 nepi ka 9
\ D sagala karakter nu teu nomer
\ s simbol kosong, spasi, tab,
\ w simbol kamus

PHP, ngolah ungkapan biasa, spasi dianggap minangka hurup valid misah, sahingga ekspresi xyz na ABC Dimana béda.

subpatterns

Dina PHP subpatterns biasa ku kurung, sarta aranjeunna nu sok nyebut "subexpressions". Nedunan fungsi handap:

  1. alternatif Alokasi. Contona, dina pola panas (hal | Manuk |) coincides jeung kecap "panas", "Firebird" jeung "panas". Na tanpa kurung éta ngan bakal hiji senar kosong, "manuk" na "panas".

  2. "Spektakuler" subpattern. Ieu ngandung harti yén lamun pola nu loyog substring, teras mulih sadayana patandingan. Pikeun kajelasan, urang masihan conto. Dibikeun ekspresi biasa handap: juara narima ((emas | emas plated) (medali | cangkir)) - sarta string pikeun patandingan, "meunangna meunang medali emas." Sajaba frase awal, hasil pilarian bakal dikaluarkeun: "Emas Medali", "medali", "emas".

Operator pangulangan (kvadrifikatory)

Dina compiling babasan nu biasa nyaeta mindeng perlu analisa pengulangan angka jeung simbul. Ieu teu masalah, upami teu loba pangulangan. Tapi naon nu kudu lamun urang teu nyaho angka pasti maranéhanana? Dina hal ieu perlu make metacharacters husus.

Pikeun pedaran pangulangan dipaké kvadrifikatory - metacharacters mun nangtukeun jumlah éta. Kvadrifikatory aya dua jenis:

  • umum dina kurung;
  • ngurangan.

Gemblengna quantifier keuna ku jumlah minimum jeung maksimum unsur pangulangan diwenangkeun dina formulir dua angka dina braces, kayaning x {2,5}. Lamun jumlah maksimum pangulangan henteu dipikawanoh, argumen kadua teu dieusian: x {2}.

quantifiers disingkat mangrupakeun lambang pikeun paling umum tina pangulangan dina urutan ulah rumpaka overloading perlu. Biasana aya tilu motong:

1. * - enol atawa leuwih pangulangan, nu sarua jeung {0,}.

2. + - salah sahiji atawa leuwih pangulangan, nyaéta {1} ...

3.? - enol atawa ngan hiji ulang - {0,1}.

conto regex

Pikeun maranéhanana anu diajar ungkapan biasa, conto - buku pangajaran pangalusna. Urang masihan sababaraha nu némbongkeun kasempetan maranéhna ku minimum usaha. Kabéh kode nyaeta sapinuhna cocog sareng versi tina PHP 4.x sarta luhur. Pikeun pinuh neuleuman rumpaka tur pamakéan sadaya fitur basa urang nyarankeun kitab ku J .. Friedl, "ungkapan biasa", nu pinuh dianggap sintaksis, jeung aya conto ungkapan biasa teu ukur PHP, tapi ogé pikeun Python, Perl, MySQL, Java, Ruby, sarta C #.

Validasi surélék alamat

Tugas. Aya hiji kaca internét on nu nganjang ka ieu dipénta email alamatna. éksprési biasa kedah pariksa correctness sahiji alamat saméméh ngirim pesen. Cék teu ngajamin yén kotak surat dieusian sabenerna aya jeung narima pesen. Tapi nalungtik kaluar alamat écés salah mémang.

Kaputusan. Salaku kalayan sagala basa programming, dina PHP verifikasi email-alamat regex bisa dilaksanakeun ku cara nu beda, sarta conto dina artikel ieu henteu pilihan final na wungkul. Kituna, dina unggal hal, urang wajib nyadiakeun daptar syarat nu perlu dibawa kana akun lamun program sarta palaksanaan husus gumantung sagemblengna kana pamekar nu.

Ku kituna, babasan éta tés hiji email valid, kudu ningali kaayaan di handap:

  1. Ayana di awal garis nu @ simbol, sarta aya henteu sela.
  2. The domain bagian tina alamat tina simbol @, ngandung ukur karakter valid pikeun ngaran domain. Sami manglaku ka ngaran pamaké.
  3. Lamun mariksa ngaran pamaké nu perlu pikeun nangtukeun ayana karakter husus kayaning hiji kekenteng atanapi garis nangtung. lambang sapertos anu berpotensi bahaya sarta bisa ngandung rupa sapertos serangan nu SQL-suntik. Ulah aya alamat.
  4. usernames ngawenangkeun ngan hiji titik, nu bisa jadi karakter mimiti atawa panungtungan di senar nu.
  5. Ngaran domain kedah ngandung sahanteuna dua teu leuwih ti genep karakter.

Contona, nyokot kana akun sakabéh kaayaan ieu bisa ditempo dina gambar di handap.

Validasi tina URL

Tugas. Pariksa naha téks string dieusian mangrupakeun valid URL alamatna. Sakali deui, urang dicatet yén ungkapan biasa URL-mariksa bisa dilaksanakeun dina sagala rupa cara.

Kaputusan. Vérsi final kami nyaéta saperti kieu:

/^(https?:\/\/)?([\da-z\.-]+)\.([az\.]{2,6})([\/\w \ .-] *) * \ /? $ /

Ayeuna nganalisis komponén taun leuwih jéntré maké gambar éta.

ngaku 1 Sateuacan URL teu kudu boga karakter wae
ngaku 2 Pariksa ayana awalan wajib «http»
item 3 Kedah aya euweuh lambang
ngaku 4 Mun aya «s», URL titik ka sambungan aman «HTTPS»
ngaku 5 bagian diperlukeun teh "//"
ngaku 6 Taya karakter
p. 7-9 Verifying nu domain tingkat munggaran sarta ayana titik
p.10-13 Verifying domain nulis di tingkat kadua teras titik
p.14-17

URL struktur file - susunan angka, aksara, underscores, dashes, titik-titik, sarta slash dina tungtungna

Pariksa angka kartu kiridit

Tugas. Anjeun kudu nerapkeun validasi tina jumlah kartu kiridit nu diasupkeun tina sistem pembayaran paling umum. Hiji varian ukur pikeun kartu Visa na MasterCard.

Kaputusan. Nalika nyieun babasan nu peryogi tumut kana akun ayana mungkin tina sela di kamar input. The digit dina peta dibagi kana grup pikeun bacaan gampang tur dikte. Kituna, ieu alam anu hiji jalma bisa nyobaan ngasupkeun angka di cara kieu (ie. E. Maké spasi).

Nulis ekspresi universal nu nyokot kana akun spasi mungkin atanapi hyphens, nyaéta leuwih pajeulit batan saukur Piceun sakabeh karakter iwal digit. Kituna, urang nyarankeun make ekspresi bonus / D, nu ngaluarkeun sagala karakter iwal digit.

Ayeuna anjeun bisa balik langsung ka nomer dipariksa. Kabéh pausahaan, issuers kartu kiridit ngagunakeun format angka unik. Dina conto nu biasa digunakeun, sarta klien nu teu perlu tulis ngaran pausahaan - eta ditangtukeun ku jumlah nu. kartu Visa salawasna dimimitian ku angka 4 na boga panjang 13 atanapi 16 digit. MasterCard dimimitian dina lingkup 51-55 kalawan jumlah lila 16. Balukarna, urang meunang babasan di handap ieu:

Sateuacan ngolah pesenan teh tiasa salajengna dites nu digit ahir jumlah, nu diitung dina algoritma Luhn.

Verifying nomer telepon

Tugas. Mariksa nu correctness sahiji nomer telepon nu diasupkeun.

Kaputusan. Jumlah digit di angka telepon nu dibereskeun jeung mobile rupa-rupa considerably gumantung nagara, ku kituna sacara universal pariksa make ungkapan biasa, nomer telepon neuleu mungkin. Tapi angka internasional boga format ketat tur sampurna pikeun mariksa pola. Malah leuwih ti kitu eta beuki loba operator telepon nasional nyobian papanggih standar anu sarua. Struktur kamar nyaéta saperti kieu:

+ CCC.NNNNNNNNNNxEEEE, dimana:

- C - nyaeta kodeu nagara nu diwangun ku 1-3 digit.

- N - jumlahna nepi ka 14 digit.

- E - extension pilihan.

Tambah mangrupa unsur indispensable, jeung tanda X aya hadir ukur nalika dibutuhkeun extension.

Hasilna urang boga ekspresi handap:

^ \ + [0-9] {1,3 } \ [0-9] {4,14}. (:?. X +)? $

The angka dina rentang

Tugas. Ieu diperlukeun pikeun mastikeun kabeneran integer of a rentang tangtu. Sajaba ti éta, perlu pikeun manggihan ekspresi biasa mung nomer ti rentang.

Kaputusan. Di dieu aya sababaraha ungkapan pikeun sababaraha kasus paling umum:

Nangtukeun sajam ti 1 nepi ka 24 ^ (1 [0-2] | [1-9]) $
Dinten di bulan 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Detik atawa menit 0-59 ^ [1-5]? [0-9] $
Sajumlah ti 1 nepi ka 100 * (100 |? [1-9] [0-9]) $
Poé sataun 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Pilarian IP-alamat

Tugas. Ieu diperlukeun keur ngabedakeun hiji senar dibikeun nyaéta IP-alamat valid dina format IPv4 dina rentang ti 000.000.000.000-255.255.255.255.

Kaputusan. Salaku kalayan sagala masalah dina basa PHP, anu ekspresi biasa boga loba varintov. Contona, ieu:

mariksa online tina ungkapan

Pariksa regex neuleu pikeun beginners bisa hésé kusabab pajeulitna sintaksis, anu beda basa programming "biasa". Pikeun ngajawab masalah ieu, aya loba testers online ungkapan anu nyieun gampang mariksa correctness tina citakan maneh dijieun dina téks nyata. programmer diasupkeun kana ekspresi sarta verifikasi data tur instan ningali hasil tina ngolah éta. Biasana aya nampilkeun bagian rujukan, nu rinci éta ungkapan biasa, conto na béda palaksanaan keur basa paling nambahan.

Tapi ka ladenan online pinuh kapercayaan hasilna teu dianjurkeun pikeun sakabéh pamekar anu nganggo PHP. Hiji ungkapan biasa ditulis tur diverifikasi jelemana raises kualifikasi sarta ngajamin henteuna kasalahan.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 su.unansea.com. Theme powered by WordPress.