30 Korisni isječci Regex koda za web-programere
Regularni izrazi su moćan alat koji bi trebao biti u svakom alatu za razvoj programera. Mogu se podudarati s nizom znakova na temelju vrlo složenih parametara, što vam može uštedjeti mnogo vremena pri izradi dinamičkih web-lokacija.
Web-programeri su suočeni s različitim zadacima nego s programerima softvera, ali i dalje postoje mnoge osnove istog koda. Regularni izrazi (ili Regularni izraz) imaju strma početna krivulja učenja, ali mogu biti iznimno snažna kada se pravilno koristi.
Najzahtjevniji dio je učenje sintakse i učenje pisanja vlastitog regex koda od nule. Da biste uštedjeli vrijeme, organizirao sam 30 različitih isječaka regex koda koje možete ugraditi u razvojne projekte. A budući da regex nije ograničen na jedan jezik, te isječke možete primijeniti na bilo što od JavaScript do PHP ili Piton.
1. Snaga zaporke
^ (? =. * [AZ]. * [AZ]) (? =. * [! @ # $ & *]) (? = *. [0-9]. * [0-9]) (? = *. [az] *. [az] *. [az]). 8 $
Provjera snage lozinke često je subjektivna pa nema apsolutno točnog odgovora. Ali osjećam da je isječak regexa odlična polazna točka ako ne želite pisati vlastitu provjeru jačine lozinke od nule. (Izvor)
2. Heksadecimalna boja
[(a-fA-F] | [0-9]) 3, 6
Područje izrade weba je sveprisutno s hex kodovima boja. Ovaj isječak s regeksom može se koristiti za izvlačenje heksadecimalnih šifri iz bilo kojeg niza za bilo koju svrhu. (Izvor)
3. Potvrdite adresu e-pošte
/[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]2,4/igm
Jedan od najčešćih zadataka za razvojnog programera je provjeriti je li string oblikovan u stilu adrese e-pošte. Postoji mnogo različitih varijanti za postizanje ovog zadatka, tako da ova SitePoint veza nudi dva različita isječka koda za provjeru sintakse e-pošte protiv niza. (Izvor)
4. IPv4 adresa
/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.)3 (:? 25 [0-5] | 2 [0-4] [0-9] | [01] [0-9] [0-9]) \ b /
Slično kao i adresa e-pošte, tipična je IP adresa koja se koristi za identifikaciju određenog računala koje pristupa internetu. Ovaj regularni izraz će provjeriti niz kako bi vidio da li slijedi sintaksu IPv4 adrese. (Izvor)
5. IPv6 adresa
(([0-9a-FA-F] 1.4:) 7,7 [0-9a-FA-F] 1.4 | ([0-9a-FA-F] 1 4:) 1,7, | ([0-9a-FA-F] 1.4:) 1,6, [0-9a-FA-F] 1.4 | ([0-9a-FA-F] 1.4:) 1,5 (: [0-9a-FA-F] 1.4) 1,2 | ([0-9a -fa-F] 1.4:) 1,4 (: [0-9a-FA-F] 1.4) 1,3 | ([0-9a-FA-F] 1,4:) 1,3 (: [0-9a-FA-F] 1.4) 1,4 | ([0-9a-FA-F] 1.4 :) 1,2 (: [0-9a-FA-F] 1.4) 1,5 | [0-9a-FA-F] 1.4, ((: [0 -9a-FA-F] 1.4) 1,6) |: ((: [0-9a-FA-F] 1.4) 1,7 |:) | fe80: (: [0-9a-FA-F] 0,4) 0,4% [0-9a-zA-Z] 1, |: :( FFFF (: 0 1,4) 0,1:) 0,1 ((25 [0-5] | (2 [0-4] | 1 0,1 [0-9]) 0,1 [0-9 ]) \) 3,3 (25 [0-5]. | (2 [0-4] | 1 0,1 [0-9]) 0,1 [0-9]) | ([0-9a-FA-F] 1.4:) 1,4, ((25 [0-5] | (2 [0-4] | 1 0,1 [0-9 ]) 0,1 [0-9]) \) 3,3 (25 [0-5]. | (2 [0-4] | 1 0,1 [0-9]) 0,1 [0-9]))
Alternativno, možda želite provjeriti adresu za noviju IPv6 sintaksu s ovim naprednijim isječkom regexa. Razlika je neznatna, iako vitalna tijekom razvoja. (Izvor)
6. Tisuće separatora
/ \ D 1,3 (? = (\ D 3) + (?! \ D)) / g
Tradicionalni sustavi numeriranja zahtijevaju zarez, razdoblje ili neku drugu oznaku svake treće znamenke u većem broju. Ovaj redni broj radi na bilo kojem broju i primijenit će bilo koju oznaku koju odaberete na svaku treću znamenku koja se dijeli na tisuće, milijune itd. (Izvor)
7. Preklopite HTTP na hipervezu
if (! s.match (/ ^ [a-z-Z] +: / / /)] s = 'http: //' + s;
Bilo da radite u JavaScriptu, Ruby ili PHP-u, ovaj regularni izraz može se pokazati vrlo korisnim. Provjerit će bilo koji niz URL-ova kako bi provjerio ima li HTTP / HTTPS prefiks, a ako ne, prema tome ga prepredite. (Izvor)
8. Povucite domenu s URL-a
/https?:\/\/(?:[-\w]+\.)?([-\w]+)\.\w+(?:\.\w+)?\/?.*/i
Svaka domena web-lokacije sadrži početni protokol (HTTP ili HTTPS), a često i poddomenu te dodatni put stranice. Možete koristiti ovaj isječak za rezanje kroz sve to i vratiti samo naziv domene bez dodatnih dodataka. (SourceL
9. Sortiraj ključne riječi prema broju riječi
^ [^ s] * $ točno odgovara ključnoj riječi od 1 riječi ^ [^ s] * s [^ s] * $ točno odgovara ključnoj riječi od 2 riječi ^ [^ s] * \ t * odgovara ključnim riječima od najmanje 2 riječi (2 i više) ^ ([^] * s) 2 [^] * $ točno odgovara ključnoj riječi od 3 riječi ^ ([^ s] * \ t ) 4 [^] * $ odgovara ključnim riječima od 5 riječi i više (longtail)
Korisnici Google Analytics i Alata za webmastere zaista će uživati u ovom regularnom izrazu. Može sortirati i organizirati ključne riječi na temelju broja riječi korištenih u pretraživanju.
To može biti brojčano određeno (tj. Samo 5 riječi) ili može odgovarati rasponu riječi (tj. 2 ili više riječi). Kada se koristi za sortiranje analitičkih podataka, to je jedan snažan izraz. (Izvor)
10. Pronaći ispravan Base64 niz u PHP-u
php [] eval (base64_decode ((([A-Za-z0-9 + /] 4) * ([A-Za-z0-9 + /] 3 = | [A-Za-Z0-9 + /] 2 ==)) 1 \ '\) \) \;
Ako ste PHP program, tada ćete možda u nekom trenutku morati analizirati kod u potrazi za Base64 kodiranim binarnim objektima. Ovaj isječak može se primijeniti na sve PHP kodove i provjeriti postojeće nizove Base64. (Izvor)
11. Valjani telefonski broj
d (1,3? [-.]? (? (?: d (2,3))? [-.] d? d? \ d \ d \ d \ d $
Kratka, slatka i do točke. Ovaj regex kod će potvrditi bilo koju tradicionalnu sintaksu telefonskog broja koja se temelji prvenstveno na američkom stilu telefonskih brojeva.
Budući da se to može pretvoriti u prilično kompliciranu temu, preporučujem da se ovaj Stack nit skenira za detaljnije odgovore. (Izvor)
12. Vodeći i prateći razmak
^ [s] + | [s] + $
Upotrijebite ovaj isječak koda da biste iz niza izvukli prazno mjesto. To možda nije velika stvar, ali ponekad može utjecati na izlaz kada se izvuče iz baze podataka ili primijeniti na drugo kodiranje dokumenta. (Izvor)
13. Povucite izvor slike)
\< *[img][^\>] * [src] * = * [\ t
Ako iz nekog razloga morate izvući izvorni izvor slike iz HTML-a, ovaj isječak koda je savršeno rješenje. Iako se može pokrenuti glatko u pozadini, prednji JS-ovi će se umjesto toga osloniti na jQuery-ovu .attr () metodu za frontend. (Izvor)
14. Potvrdite datum u formatu DD / MM / GGGG
^ (:( ?: 31 (\ / | - |?,? \) (0 ?: [13.578] | 1 [02])) | (? :( ?: 29 | 30) \ 1 (\ / | - | \) (0 ?: [1,3-9] |.? 1 [0-2]) \ 2)) (1 :( ?: [6-9] |? [2-9] \ d)? \ d 2) $ | ^ (?: 29 (\ / | - |. \)?? 0 2 \ 3 (:( :( 1 ?: [6-9] | [2-9] \ d ) (0 ?: [48] |? [2468] [048] | [13.579] [26]) | (:( ?: 16 |? [2468] [048] | [3579] [26]) 00)) )) $ | ^ (0 ?: [1-9] | 1 \ d | 2 [0-8]) (\ / | - |?,? \) (:( ?: 0 [1-9]) | (: 1 [0-2])?) \ 4 (:( 1 ?: [6-9] | [2-9] \ d) \ d 2) $
Datumi su nezgodni jer se mogu pojaviti kao tekst + brojevi ili samo kao brojevi s različitim formatima. PHP ima fantastičnu funkciju datuma, ali to nije uvijek najbolji izbor za povlačenje sirovog niza. Umjesto toga, razmislite o korištenju ovog regularnog izraza za ovu specifičnu sintaksu datuma. (Izvor)
15. Podudaranje ID videozapisa usluge YouTube
/http:\/\/(?:youtu\.be\/|(?:[az]2,3\.)?youtube\.com\/watch(?:\?|#\!)v =) ([\ w -]. 11) + / gi
Usluga YouTube zadržala je istu strukturu URL-a već godinama jer radi. To je ujedno i najpopularnija web-lokacija za dijeljenje videozapisa na webu pa videozapisi na usluzi YouTube imaju najveći promet.
Ako trebate izvući ID videozapisa usluge YouTube iz URL-a, ovaj kod je ispravan i trebao bi savršeno funkcionirati za sve varijante struktura URL-a usluge YouTube. (Izvor)
16. Valjan ISBN
b (?: ISBN (? ::? |))? ((?: 97 [89])? 9 [dx]) b / i
Tiskane knjige slijede sustav numeriranja nazvan ISBN. To može biti prilično nezgodno kada uzmete u obzir razlike između ISBN-10 i ISBN-13.
Međutim, ovaj nevjerojatan isječak vam omogućuje da potvrdite ISBN broj i provjerite je li ISBN10 ili 13. Sav kod je napisan u PHP-u tako da se to mora pokazati iznimno korisnim za web programere. (Izvor)
17. Provjerite poštanski broj
^ \ D 5 (: [- \ s] \ d 4)? $
Tvorac ovog isječka ne samo da je objavio svoj rad besplatno, već je i vrijeme pokušao objasniti. Ovaj ćete isječak pronaći korisno bez obzira na to odgovara li tipični 5-znamenkasti poštanski broj ili dužu 9-znamenkastu verziju.
Imajte na umu da je to prvenstveno namijenjeno američkom sustavu poštanskih brojeva tako da to može zahtijevati prilagodbu za druge zemlje. (Izvor)
18. Valjano Twitter korisničko ime
/ '([A-Za-Z0-9 _] 1,15) /
Ovo je vrlo mali isječak koda za podudaranje s Twitter korisničkim imenima u nizu. On provjerava @spomenuti sintaksa koja je savršena za automatsko skeniranje sadržaja tweet-a (ili tweets-a). (Izvor)
19. Brojevi kreditnih kartica
^ (4 ?: [0-9] 12 (: [0-9] 3) | 5 [1-5] [0-9] 14 | 6 (:? 011 | 5 [ 0-9] [0-9]) [0-9] 12 | 3 [47] [0-9] 13 | 3 (: 0 [0-5] | [68] [0-9 ]) [0-9] 11 | (: 2131 | 1800 | 35 \ d 3) \ d 11) $
Provjera broja kreditne kartice često zahtijeva sigurnu platformu koja se nalazi na internetu. No, regex se može koristiti za minimalne zahtjeve tipičnog broja kreditne kartice.
Detaljniji popis kodova za pojedinačne kartice možete pronaći ovdje. To uključuje Visa, MasterCard, Discover i mnoge druge. (Izvor)
20. Pronađite CSS atribute
^ \ S [a-zA-Z \ -] \ s * [:] 1 \ s [a. IZA-Z0-9 \ s #] + [] 1
Možda je rijetko izvoditi regex preko CSS-a, ali to nije nevjerojatno čudna situacija.
Ovaj isječak koda može se koristiti za izvlačenje svakog odgovarajućeg CSS-a i vrijednosti iz pojedinačnih selektora. Može se koristiti za bilo koji broj razloga, možda za pregled dijelova CSS-a ili za uklanjanje duplikata svojstava. (Izvor)
21. Strip HTML Komentari
Ako iz bilo kojeg razloga morate ukloniti sve komentare iz bloka HTML-a, to je kod regexa koji ćete koristiti. Zajedno s izrazom naći ćete PHP primjer pomoću preg_replace. (Izvor)
22. URL profila na Facebooku
/(?:http:\/\/)?(?:www\.)?facebook\.com\/(?:(?:\w)*#!\/)?(?:pages\/)? (: [\ w \ -] * \ /) + ([\ w \ -] *) /
Facebook je nevjerojatno popularan i prošao je mnogo različitih URL shema. U situaciji kada uzimate URL-ove profila od korisnika, moglo bi biti korisno analizirati nizove i potvrditi da su pravilno strukturirani. Ovaj isječak može učiniti upravo to i savršen je za sve veze u stilu FB-a. (Izvor)
23. Provjerite verziju programa Internet Explorer
*. * MSIE [5-8] (?: [0-9] +)? (?!. * Trident [5-9] 0).
Microsoftov prelazak na Edge nije bio jednoglasan i mnogi se ljudi još uvijek oslanjaju na klasični Internet Explorer. Programeri često moraju provjeriti postoje li verzije IE-a za obradu nedosljednosti s motorima za prikazivanje.
Ovaj isječak se može koristiti u JavaScriptu za testiranje agenta preglednika na temelju koje se verzije Internet Explorera (5-11) koristi. (Izvor)
24. Izvuci cijenu
/(\$[0-9,]+(\.[0-9]2)?)/
Cijene dolaze u različitim formatima koji sadrže decimale, zareze i simbole valute. Ovaj regularni izraz može provjeriti sve ove različite formate da bi izvukao cijenu iz bilo kojeg niza. (Izvor)
25. Analizirajte zaglavlje e-pošte
/\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]2,6\b/i
Pomoću te jedne linije koda možete raščlaniti kroz zaglavlje e-pošte kako biste ga izvukli “do” informacije iz zaglavlja. Može se koristiti u tandemu s više e-poruka koje su spojene zajedno.
Ako više volite izbjegavati regex za ovaj zadatak, umjesto toga možete se osloniti na analiziranje knjižnice. (Izvor)
26. Odgovara posebnom tipu
/^(.*\.(?!(htm|html|class|js)$))?[^.]*$/i
Kada radite s raznim formatima datoteka kao što su .xml, .html i .js, to može pomoći da provjerite datoteke i lokalno i učitane od strane korisnika. Ovaj isječak izvlači datotečni nastavak kako bi provjerio je li valjan iz niza važećih proširenja koja se mogu po potrebi promijeniti. (Izvor)
27. Uskladite niz URL-ova
/[-a-zA-Z0-9@:%_\+.~#?&//=]2,256\.[az]2,4\b(\/[-a-zA-Z0 -9 @.?% _ \ +-# '// =] *) / gI
Ovaj se isječak može koristiti i za nizove HTTPS i HTTP kako bi se provjerilo podudara li se tekst s tradicionalnom sintaksom domene TLD. Tu je i jednostavna implementacija ovog regexa pomoću JavaScripta RegExp. (Izvor)
28. Dodati rel =”nofollow” u Linkovi
(] *) (href = "https?: //) ((?! (?: (?: www.)?". implode ('| (?: www.)?', $ follow_list). ') ?!). [^ "] +)" ((* \ Brel =) [^>] *) (:? [^>] *)>
Ako radite s skupom HTML koda, može biti strašno primijeniti ručni rad na zadatke koji se ponavljaju. Regularni izrazi su savršeni za ovu prigodu i oni će uštedjeti puno vremena.
Ovaj isječak može povući sve sidrene veze iz bloka HTML-a i dodati rel =”nofollow” atribut svakom elementu. Programer koji je napisao ovaj kod bio je dovoljno ljubazan da objavi sirovi izraz plus radni primjer u PHP-u.
29. Podudaranje upita za medije
/ 'Medij ([^] +) \ ([\ s \ S]?) \ S * / g
Razdvojite CSS medijske upite u njihove parametre i svojstva. To vam može pomoći da analizirate vanjski CSS na čišći način, s izravnijim fokusom na funkcioniranje koda. (Izvor)
30. Sintaksa Google pretraživanja
/([+-]?(?:'.+?'|".+?"|[^+\-] 1 [^] *)) / g
Možete izraditi vlastiti regex kod za manipuliranje tekstom koji se može pretraživati pomoću Googleove sintakse zaštitnog znaka. Znak plus (+) označava dodatne ključne riječi, a znak minus (-) označava riječi koje treba zanemariti i ukloniti iz rezultata.
To je prilično kompliciran isječak, ali se ispravno koristi i može poslužiti kao osnova za izradu vlastitog algoritma pretraživanja. (Izvor)
Zamotati
Put do svladavanja regexa je dugačak, ali zahvalan ako ga se držite. Osim tipičnih regex alata, najbolji način učenja je ponavljanje. Pokušajte izraditi web-aplikacije koje se oslanjaju na te regex isječke da biste saznali kako rade u stvarnoj web-aplikaciji. A ako imate i druge isječke za predlaganje, možete ih objaviti u donjem dijelu za komentare.
Sada pročitajte:
50 korisnih CSS isječaka koji bi svaki dizajner trebao imati