* Meidän on rajoitettava käytettävissä merkkijono 3 tai 6 merkkiä. Kääntää regexes regex ensimmäisen osa on: /^ [AZ az] {3,18} $ /regex toisen osan on: /^ [0-9] {3,18} $ /regex kolmannen osa on: /^ [_] {3,18} $ /Yhdistämällä regexes tauko alas osiossa, edellä kolmeen osaan yhdistetään lause, "ja /tai" ei ole suoraa tapa tehdä Tämän, joten meidän täytyy päätellä sitä. Tämä on yhdistetty regex: /^ [-ZA-Z0-9 _] {3,18} $ /optimointi yhdistetyn Regex Tämä tarkoittaa lyhentää yhdistetyn regex. Huomaa, että luokka [-ZA-Z0-9_] lyhennetään \\ w.
Optimoitu regex on: /^ [\\ w] {3,18} $ /vetäytymistä Olemme nähneet, miten vastaamaan vaihtoehtoja käyttäen vuorottelu metamerkki, |. Kun vastaavia vaihtoehtoja, Perl käyttää prosessia kutsutaan vetäytymistä. Aion havainnollistaa tätä esimerkkiä. Harkitse seuraava lauseke: "12345" = ~ /(124 | 123) (46 | 4 | 45) /selitän taantuminen selittämällä toiminnan edellä ilmaisua. Seuraavassa kuvataan, miten PHP ratkaisee edellä ilmaisua. A. Se alkaa ensimmäinen numero käytettävissä merkkijono "1". B. Se yrittää ensimmäisen vaihtoehdon ensimmäisen ryhmän "124". C.
Se näkee yhteensovittaminen "1", jota seuraa "2". Se on kunnossa. D. Se huomaa, että "4 'regex ei vastaa" 3 "vuonna käytettävissä merkkijono - joka on umpikuja. Joten se backtracks kaksi merkkiä saatavilla merkkijono ja poimii toisen vaihtoehdon ensimmäiseen ryhmään "123". E. Se vastaa "1", jota seuraa "2", jota seuraa "3". Ensimmäinen ryhmä on tyytyväinen. F. Se siirtyy toiseen ryhmään ja poimii ensimmäinen vaihtoehto "46". G. Se vastaa "4 'käytettävissä merkkijono. H. kuitenkin "6" vuonna regex ei vastaa '5' on käytettävissä merkkijonon, niin että on umpikuja.
Se backtracks yksi merkki käytettävissä merkkijono ja poimii toisen vaihtoehdon toisen ryhmän "4". I '4' ottelunsa. Toinen ryhmittymä on tyytyväinen. J. Olemme lopussa regex; olemme valmiit! Olemme Hyväksytty "1234" pois käytettävissä merkkijono "12345". On kaksi asiaa huomata tästä prosessist
0 ( Dot Net )