CyfrifiaduronRhaglennu

PHP (regex) - beth ydyw? Enghreifftiau a gwirio mynegiadau rheolaidd

Wrth weithio gyda thestun mewn unrhyw iaith raglennu fodern, datblygwyr yn cyfarfod yn gyson ag amcanion dilysu mewnbwn ar gyfer cydymffurfio â'r patrwm a ddymunir, chwilio a disodli darnau prawf a mathau eraill o brosesu gweithrediadau o wybodaeth cymeriad. Datblygu eich algorithmau dilysu eich hun yn arwain at golli amser, pa mor gydnaws cod a chymhlethdod yn ei datblygiad a moderneiddio.

Mae datblygiad cyflym y Rhyngrwyd a WEB-ddylunio ieithoedd ofynnol o ddulliau hyblyg a chryno o brosesu testun chreu gyda swm lleiaf sy'n ofynnol ar gyfer y cod hwn. Mae'n yn eithriad ac mae'n boblogaidd ymhlith dechreuwyr a datblygwyr proffesiynol iaith PHP. Yr iaith mynegiant rheolaidd gan fod y templedi testun i symleiddio'r dasg o drin y testun a lleihau cod ar gyfer degau a channoedd o linellau. Ni all llawer o broblemau eu datrys o gwbl hebddo.

Mynegiadau rheolaidd yn PHP

Mae iaith PHP tri mecanwaith ar gyfer gweithio gyda mynegiadau rheolaidd - «Ereg», «mb_ereg» a «preg". Y mwyaf cyffredin yw'r rhyngwyneb «preg», y mae ei swyddogaethau yn darparu mynediad at y llyfrgell PCRE y gefnogaeth mynegiant rheolaidd, a ddatblygwyd yn wreiddiol ar gyfer y Perl iaith, sy'n cael ei gynnwys yn y pecyn PHP. Preg-chwilio am swyddogaethau mewn cyfateb llinyn testun a roddir, yn ôl patrwm penodol yn yr iaith y mynegiadau rheolaidd.

Basics cystrawen

Fel rhan o erthygl fer mae'n amhosib disgrifio'n fanwl y cyfan gystrawen mynegiant rheolaidd, ar gyfer hyn mae llenyddiaeth arbennig. Rydym yn cyflwyno dim ond y prif elfennau i ddangos cyfleoedd ar gyfer datblygwr a deall yr enghreifftiau cod.

Yn PHP yn cael ei ddiffinio mynegiant rheolaidd yn ffurfiol yn anodd iawn, ac felly yn symleiddio'r disgrifiad. Mynegiad rheolaidd yn yn llinyn testun. Mae'n cynnwys templed gwahanydd pwrpasol a'r addasydd yn dangos y ffordd i drin. cynhwysiad posibl yn y gwahanol ddewisiadau ac ailadroddiadau o batrymau.

Er enghraifft, mewn mynegiant / \ d {3} - \ d {2} - \ d {2} / m divider yw "/", wedi'i ddilyn gan y templed, ac mae'r symbol «m» yw'r modifier.

Mae pob grym mynegiadau rheolaidd yn encoded gan ddefnyddio meta-cymeriadau. Y brif metacharacter iaith yn y slaes - "\". Mae'n newid y math o ddilyn cymeriadau ar y gwrthwyneb (hy. E. Troswyd i mewn i nod-chwiliwr gymeriad cyffredin ac i'r gwrthwyneb). metacharacter pwysig arall yw llinell syth «|», yn pennu'r templed amgen. Mwy o enghreifftiau o feta-cymeriadau:

^ Dechreuwch wrthrych neu llinyn
( dechrau subpattern
) subpattern End
{ quantifier Start
} quantifier End
\ d digid degol 0-9
\ D unrhyw gymeriad nad yw'n rhif
\ s symbol gwag, gofod, tab,
\ w geiriadur symbol

PHP, prosesu mynegiadau rheolaidd, lle ystyriwyd fel cymeriad dilys ar wahân, fel y mynegiant o XYZ a ABC BLE yn wahanol.

subpatterns

Yn PHP subpatterns rheolaidd gan cromfachau, ac maent yn cael eu galw weithiau yn "subexpressions". Perfformiwch y swyddogaethau canlynol:

  1. dewisiadau eraill dyrannu. Er enghraifft, mae'r patrwm gwres (rhywbeth | Bird |) yn cyd-fynd gyda'r geiriau "gwres", "Firebird" a "poeth". Ac heb y cromfachau bydd ond yn llinyn gwag, "aderyn" a "poeth".

  2. "Spectacular" subpattern. Mae hyn yn golygu os bydd y patrwm cyfateb linyn, ac yna yn dychwelyd holl gemau. Er mwyn eglurder, rydym yn rhoi enghraifft. O ystyried y mynegiad rheolaidd canlynol: yr enillydd yn derbyn ((aur | plated aur) (medal | cwpan)) - ac mae'r llinyn ar gyfer gemau, "yr enillydd yn cael medal aur." Yn ychwanegol at y cymal cyntaf, bydd y canlyniadau chwilio yn cael eu cyhoeddi: "Medal Aur", "medalau", "aur".

ailadroddiadau Gweithredwyr (kvadrifikatory)

Wrth lunio'r mynegiant rheolaidd yn aml mae angen dadansoddi'r ailadrodd rhifau a symbolau. Nid yw hyn yn broblem, os nad llawer o ailadrodd. Ond beth i'w wneud pan nad ydym yn gwybod beth yw eu union nifer? Yn yr achos hwn, mae'n angenrheidiol i ddefnyddio metacharacters arbennig.

Am ddisgrifiad o ailadrodd a ddefnyddir kvadrifikatory - metacharacters i nodi'r rhif. Kvadrifikatory o ddau fath:

  • gyffredin mewn cromfachau;
  • lleihau.

quantifier gyffredinol cyffwrdd gan y nifer isafswm ac uchafswm yr elfen ailadrodd ganiateir ar ffurf dau rif yn y braces, megis x {2,5}. Os na fydd y nifer mwyaf o ailadrodd yn hysbys, nid yr ail ddadl ei nodi: x {2}.

quantifiers cryno yn symbolau ar gyfer y rhai mwyaf cyffredin o ailadrodd er mwyn osgoi gorlwytho cystrawen diangen. Fel arfer mae tair toriadau:

1. * - sero neu fwy o ailadrodd, sy'n cyfateb i {0,}.

2. + - un neu fwy o ailadrodd, hy, {1} ...

3.? - sero neu dim ond un ailadrodd - {0,1}.

Enghreifftiau regex

Ar gyfer y rhai sy'n dysgu mynegiadau rheolaidd, enghreifftiau - y gwerslyfr gorau. Rydym yn rhoi rhai sy'n dangos eu cyfleoedd gyda lleiafswm o ymdrech. Mae pob cod yn gwbl gydnaws â fersiynau o'r 4.x PHP ac uwch. Er mwyn deall y cystrawen a defnydd o'r holl nodweddion ieithyddol rydym yn argymell y llyfr gan J .. Friedl, "mynegiadau rheolaidd", a oedd yn ystyried yn llawn cystrawen yn llawn, ac mae enghreifftiau o ymadroddion rheolaidd, nid yn unig PHP, ond hefyd ar gyfer Python, Perl, MySQL, Java, Ruby, ac C #.

Dilysu Cyfeiriad e-bost

Tasg. Mae tudalen Rhyngrwyd y mae'r ymwelydd Gofynnir cyfeiriad e-bost. Rhaid mynegiad rheolaidd wirio cywirdeb y cyfeiriadau cyn anfon negeseuon. Nid yw Gwiriwch yn gwarantu bod y blwch post a nodir yn bodoli mewn gwirionedd ac yn derbyn negeseuon. Ond chwyn allan cyfeiriadau amlwg yn anghywir y gall.

Penderfyniad. Fel gydag unrhyw iaith raglennu, yn PHP Gall dilysu e-bost-gyfeiriad regex cael eu gweithredu mewn ffyrdd gwahanol, ac nid yw'r enghreifftiau yn yr erthygl hon yn y dewis terfynol ac yn unig. Felly, ym mhob achos, byddwn yn darparu rhestr o ofynion y mae angen eu hystyried wrth raglennu a gweithredu penodol dibynnu'n gyfan gwbl ar y datblygwr.

Felly, mae'r ymadrodd sy'n profi yn e-bost dilys, dylid edrych ar yr amodau canlynol:

  1. Mae presenoldeb yn y cychwyn llinell y symbol @, ac nid oes unrhyw fylchau.
  2. Mae rhan parth o gyfeiriad y symbol @, yn cynnwys dim ond cymeriadau dilys ar gyfer enwau parth. Mae'r un peth yn berthnasol i enw'r defnyddiwr.
  3. Wrth edrych ar y enw defnyddiwr yn angenrheidiol i benderfynu presenoldeb gymeriadau arbennig fel collnod neu linell fertigol. symbolau o'r fath yn gallu bod yn beryglus a gellir eu cynnwys mewn mathau fath o ymosodiadau y SQL-pigiad. Ceisiwch osgoi cyfeiriadau.
  4. enwau defnyddwyr yn caniatáu dim ond un pwynt, na all fod yn gymeriad cyntaf neu olaf yn y llinyn.
  5. Rhaid i'r enw parth yn cynnwys o leiaf ddau a dim mwy na chwe nod.

Enghraifft, gan gymryd i ystyriaeth yr holl amodau hyn y gellir ei gweld yn y ffigur canlynol.

Dilysu URL

Tasg. Gwiriwch a yw'r llinyn testun penodedig yw ddilys cyfeiriad URL. Unwaith eto, rydym yn nodi y gall mynegiadau rheolaidd URL-gwirio yn cael eu gweithredu mewn ffyrdd amrywiol.

Penderfyniad. Mae ein fersiwn terfynol fel a ganlyn:

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

Nawr dadansoddi ei gydrannau yn fwy manwl gan ddefnyddio'r llun.

hawliad 1 Cyn ni ddylai'r URL unrhyw gymeriadau
hawlio 2 Gwiriwch y presenoldeb y rhagddodiad gorfodol «http»
eitem 3 Ni ddylai fod unrhyw symbolau
hawlio 4 Os oes «s», y pwyntiau URL i gysylltiad sicrhawyd «https»
hawlio 5 cyfran ofynnol gan y "//"
hawlio 6 Dim cymeriadau
t. 7-9 Gwirio y parth lefel gyntaf a phresenoldeb pwynt
p.10-13 Gwirio parth ysgrifennu'r ail lefel a'r man
p.14-17

strwythur y ffeil URL - set o rifau, llythrennau, tanlinellau, llinellau toriad, dotiau, a slaes ar y diwedd

Gwiriwch y rhifau cerdyn credyd

Tasg. Mae angen i chi weithredu dilysu rhif cerdyn credyd gofnodi o'r systemau talu mwyaf cyffredin. Mae amrywiad yn unig ar gyfer cardiau Visa a MasterCard.

Penderfyniad. Wrth greu mynegiant angen i chi gymryd i ystyriaeth y presenoldeb posibl o fylchau yn yr ystafell mewnbwn. Y digidau ar y map yn cael eu rhannu'n grwpiau ar gyfer darllen yn haws ac yn arddweud. Felly, mae'n naturiol y gall person geisio fynd i mewn i nifer yn y ffordd hon (hy. E. Defnyddio mannau).

Ysgrifennwch fynegiad cyffredinol sy'n ystyried y bylchau neu'r gysylltnodau posibl, yn fwy cymhleth na dim ond taflu pob gymeriadau ac eithrio digid. Felly, rydym yn argymell defnyddio mynegiant / D wildcard, sy'n cael gwared pob gymeriadau ac eithrio digid.

Nawr fe allwch chi fynd yn uniongyrchol at y rhif siec. Bob cwmni, issuers cerdyn credyd defnyddio fformat rhif unigryw. Yn yr enghraifft, mae'n cael ei ddefnyddio, ac nid oes angen i'r cleient i fynd i mewn i'r enw'r cwmni - mae'n cael ei bennu gan y nifer. Cardiau Visa bob amser yn dechrau gyda rhifau 4 a chael hyd 13 neu 16 digid. MasterCard yn dechrau yn yr ystod o 51-55 gyda nifer hir 16. O ganlyniad, rydym yn cael y mynegiad canlynol:

Cyn brosesu'r gorchymyn y gellir ei brofi ymhellach y digidau olaf y nifer, a gyfrifir ar y algorithm Luhn.

rhif ffôn Gwirio

Tasg. Gwirio cywirdeb y rhif ffôn gofnodi.

Penderfyniad. Mae nifer o ddigidau yn y rhifau ffôn sefydlog a symudol yn amrywio'n sylweddol yn dibynnu ar y wlad, felly yn gyffredinol yn gwirio ddefnyddio ymadroddion rheolaidd, rhif ffôn yn gywir amhosibl. Ond mae niferoedd rhyngwladol Mae fformat caeth ac yn berffaith ar gyfer gwirio patrwm. Hyd yn oed yn fwy felly bod gweithredwyr ffôn yn fwy a mwy cenedlaethol yn ceisio cwrdd â'r un safon. Strwythur Ystafell fel a ganlyn:

+ CCC.NNNNNNNNNNxEEEE, lle:

- C - yw'r cod wlad sy'n cynnwys 1-3 digid.

- N - rhif hyd at 14 digid.

- E - estyniad dewisol.

Gwaith yn un elfen anhepgor, ac mae'r arwydd X yn bresennol dim ond pan fo angen estyniad.

O ganlyniad, mae gennym y mynegiad canlynol:

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

Mae'r niferoedd yn yr ystod

Tasg. Mae'n angenrheidiol i sicrhau cyd-ddigwyddiad cyfanrif o amrywiaeth penodol. Yn ogystal, mae angen dod o hyd i mynegiant rheolaidd dim ond y rhifau o'r ystod.

Penderfyniad. Dyma rai ymadroddion i rai o'r achosion mwyaf cyffredin:

Penderfynu awr 1-24 ^ (1 [0-2] | [1-9]) $
Diwrnod ym mis 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Eiliadau neu funudau 0-59 ^ [1-5]? [0-9] $
Mae rhif o 1 i 100 o * (100 |? [1-9] [0-9]) $
Diwrnod o flwyddyn 1-366 ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Chwilio IP-gyfeiriadau

Tasg. Mae'n angenrheidiol i benderfynu a yw llinyn a roddir yn IP-gyfeiriad dilys mewn fformat IPv4 yn yr ystod o 000.000.000.000-255.255.255.255.

Penderfyniad. Fel gydag unrhyw broblem yn iaith PHP, mae'r mynegiant rheolaidd â llawer o varintov. Er enghraifft, mae hyn yn:

gwirio ar-lein o ymadroddion

Gwiriwch regex gywir ar gyfer y gall dechreuwyr fod yn anodd oherwydd cymhlethdod y gystrawen, sy'n wahanol i ieithoedd rhaglennu "rheolaidd". I ddatrys y broblem hon, mae llawer o brofwyr lein ymadroddion sy'n ei gwneud yn hawdd i wirio cywirdeb y templed a grëwyd gennych yn y testun go iawn. Mae'r rhaglennydd mynd i mewn i'r data mynegiant a gwirio ac yn syth yn gweld canlyniad y prosesu. Fel arfer, mae cyflwyno adran gyfeirio, sy'n rhoi manylion y mynegiadau rheolaidd, enghreifftiau a gwahaniaethau gweithredu ar gyfer yr ieithoedd mwyaf estynedig.

Ond i wasanaethau ar-lein yn llawn ymddiried ganlyniadau nid argymhellir ar gyfer holl ddatblygwyr sy'n defnyddio PHP. Mynegiad rheolaidd yn cael ei ysgrifennu a'i gwirio yn bersonol, yn codi cymhwyster ac yn gwarantu nad oes camgymeriadau.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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