* Vi skal begrænse den tilgængelige streng til 3 eller 6 tegn. Oversætte ind regexes Den regex for den første del er: /^ [a-zA-Z] {3,18} $ /regex for den anden del er: /^ [0-9] {3,18} $ /Den regex for tredje del er: /^ [_] {3,18} $ /kombinere regexes I pausen ned afsnit er de tre ovennævnte del kombineret med sætningen, "og /eller" Der er ingen direkte måde at gøre dette, så vi er nødt til at udlede det. Dette er den kombinerede regex: /^ [a-zA-Z0-9 _] {3,18} $ /Optimering af den kombinerede Regex Det betyder forkorte den kombinerede regex. Bemærk at klassen [a-zA-Z0-9_] er forkortet til \\ w.
Den optimerede regex er: /^ [\\ w] {3,18} $ /trækker i land Vi har set, hvordan at matche alternativer ved hjælp af vekslen metategn, |. Når matchende alternativer, bruger Perl en proces kendt som regression. Jeg vil illustrere dette med et eksempel. Overvej følgende udtryk: "12345" = ~ /(124 | 123) (46 | 4 | 45) /Jeg vil forklare tilbageskridt ved at forklare driften af ovenstående udtryk. Følgende trin forklarer, hvordan PHP løser ovenstående udtryk. A. Det begynder med det første nummer i tilgængelige strengen '1'. B. Det forsøger det første alternativ i den første gruppe «124«. C.
Det ser matchning af '1' efterfulgt af '2'. Det er i orden. D. Det bemærker, at '4' i regex ikke passer '3' i den tilgængelige streng - det er en blindgyde. Så det tilbagekalder to tegn i den tilgængelige streng, og henter det andet alternativ i den første gruppe «123«. E. Det matcher '1' efterfulgt af '2' efterfulgt af »3«. Den første gruppe er tilfreds. F. Det går videre til den anden gruppe, og henter det første alternativ «46 '. G. Det matcher '4' i den tilgængelige streng. H. Men '6' i regex matcher ikke '5' i den tilgængelige streng, så det er en blindgyde.
Det tilbagekalder et tegn i den tilgængelige streng, og henter det andet alternativ i den anden gruppe '4'. I. '4' kampe. Den anden gruppering er tilfreds. J. Vi er i slutningen af regex; v