Kezdő útmutató a rendszeres kifejezéshez (Regex)
A rendszeres kifejezés olyan karakterkészlet, amely egy karakterláncban kereshető mintát tartalmaz. A Regex használható érvényesítés hitelkártyaszámok érvényesítéséhez keresés vagyis bonyolult szöveges egyezményeken keresztül és a megfelelő szöveg helyettesítése egy másik karaktersorozattal. Nagyszerű többnyelvű támogatással is rendelkezik - egyszerre tanulhatja meg, és sok programnyelven használható.
Láttam kevés embert, aki első pillantást vetett a regexre, és teljesen figyelmen kívül hagyja. Nem hibáztatom őket; A regex szintaxisa bonyolult, és csak sok rosszabb lesz, mint a parancssor nyelvei. De aztán minden új dolog ijesztő, és először nem lehet megtanulni. Szóval, felveszem Horatius szavait, ezt mondom; Kezdjetek, merészek vagyunk, és bölcsek legyetek.
Regex-ről
A Regex gyökerei az idegtudományban és a matematikában voltak, és csak 1968-ban programozta Ken Thompson a QED szövegszerkesztőben a szöveges kereséshez. Most már számos programozási nyelv része, mint például a Perl, a Java, a Python, a Ruby és a JavaScript.
Nézzünk néhány példát arra, hogyan működik a regex.
A példákat a JavaScript használatával fogom használni. Most, hogy elkezdjük a kezdő szintet, mindent meg kell tanulnunk karakterek, osztályok, kvantifikátorok, módosítók és módszerek a regexben használt. Íme egy link a Mozilla Developer Network rendszeres kifejezés oldalára, ahol megtekintheti az összes táblázatot. A leggyakrabban használt karakterekkel a posta végén található cheatsheet-re is hivatkozhat.
Lássunk egy egyszerű példát magyarázattal. Ez egy regex.
Ez az, amit a fenti regex egy sorban keres, egy "B" karaktert, amelyet legalább egy karakter (köztük) 'a' - 'z', 'A' - 'Z' és 0 - 0 közötti karakterek követnek. 9.
Itt van egy minta a kijelölt sorban:
Kosár, izzó, B12 vitamin, BaSO4, N időszámításunk előtt vállalat
A fenti regex leállítja a keresést Kosár és küldjön pozitív választ. Azért mert a globális módosítóg
„meg kell adni ha azt szeretné, hogy a regex megvizsgálja az összes lehetséges mérkőzést.
Most nézzük meg, hogyan kell használni ezt a kifejezést a JavaScript-ben. A teszt
a módszer: ha talál egy meccs-visszatérést igaz
, más hamis
.
var input = "a tesztlánc", regex = / B [a-zA-Z] + /; ha (! regex.test (input)) riasztás ('Nincs találat'); egyéb figyelmeztetés („Egy mérkőzés található”);
Próbáljunk másik módszert: mérkőzés
visszaadja a tömbben talált találatokat.
var input = "a tesztláncod", regex = / B [a-zA-Z] + / g, / * A "g" globális módosítót hozzáadtam a regexhez, hogy megkapjam az összes mérkőzést * / ary = input.match (regex); ha (ary === null) figyelmeztetés („Nincs találat”); egyébként figyelmeztetés ('egyezés:' + ary.toString ());
Mit szólnál a húrhoz cserélje
? Próbáljuk meg most a regex-el.
var input = "a tesztláncod", regex = / B [a-zA-Z] + / g; riasztás (input.replace (regex, "#"));
Az alábbiakban egy codepen van az Ön számára a csípéshez. A JS kód megtekintéséhez kattintson a "JavaScript" fülre.
Feladatok
Gyakorlatokhoz google “regex gyakorlatok” és próbálja megoldani őket. Íme, mit várhatunk el ezeknek a gyakorlatoknak a megpróbálásakor, a nehézségi szintek szerint.
Alapvető
Számomra képes érvényesítse a jelszót elég a starterek számára. Tehát érvényesítsen egy 8–16 karakter hosszúságú jelszót, alfanumerikus és a megengedett különleges karakterek kiválasztásával.
Közbülső
Ez az a hely, ahol több valós valós adattal kell dolgoznia, és még több regex pontot szeretne megtanulni lookahead, látszólagos állítások és megfelelő csoportok;
- A PIN-kódok, hexadecimálisok, dátumok, e-mail azonosító, lebegőpont érvényesítése.
- Cserélje ki a nullát, a szóközöket, a megfelelő szavak egy sorát
- Az URL különböző részeinek kivonása
Fejlett
A fenti gyakorlatok megoldásait optimalizálhatja - az e-mailek legoptimálisabb regexje több ezer karaktert tartalmaz vegye el, amennyire jól érzi magát, és ez elég. Megpróbálhatja:
- HTML vagy XML elemzése (az igazi világban ez az esemény nem tetszik, mert a rendszeres kifejezés használata a nem szokásos nyelvek elemzéséhez, mint a HTML, soha nem fogja meggyőződni. Plusz XML-elemzés nehéz feladat, jobban megfelel a fejlett szintű felhasználóknak)
- Címkék cseréje
- Megjegyzések eltávolítása (kivéve az IE feltételes megjegyzéseit)
Eszközök
Eszközök vizualizálja a regexet egyike a legmenőbb dolgoknak nekem. Ha valaha találkoztál egy hosszú, komplex regex-szel, csak másolja be őket az egyik ilyen eszközbe, és egyértelműen megnézheti az áramlást. Emellett számos olyan eszköz áll rendelkezésre, amelyekkel a regex kóddal ötvözhet. Emellett bemutatják a példákat és a csaláslapokat a megosztási funkciókkal együtt.
- Debuggex - Regex-diagramot rajzol a bemenetenként, és azonnal meg tudja osztani a StackOverflow-t.
- RegExr - Ezzel tesztelheti a regexet. Hivatkozással, cheatsheet és példákkal is segítettek.
- Refiddle - A JavaScript-en kívül pillanatnyilag Ruby és .NET verziójú regex-ek is lehetnek benne.
Regex cheatsheet
Jelképes | Meghatározás |
[ABC] | Bármely egyetlen a, b vagy c karakter |
[^ Abc] | Bármely más karakter, mint az a, b vagy c |
[A-z] | A (beleértve) a és z közötti karakter |
[^ A-z] | Karakter, kivéve az a-tól z-ig |
[A-Z] | A (beleértve) A-tól Z-ig terjedő karakter |
. | Egyetlen karakter |
\ s | Bármely szóköz |
\ S | Bármilyen nem-szóköz karakter |
\ d | Bármely 0–9 számjegy |
\ D | Bármely nem számjegy |
\ w | Bármilyen szó karakter (betű, szám és aláhúzás) |
\ W | Bármely nem szó karakter |
(…) | Fogja meg mindent zárt |
(A | b) | Vagy egy vagy b |
egy? | Az a karakter hiányzik vagy jelen van egyszer |
a * | Az a karakter hiányzik vagy több alkalommal jelenik meg |
egy+ | Az a karakter egy vagy több alkalommal van jelen |
a 3 | A karakter a 3 előfordulása egymás után |
a 3, | A karakterek 3 vagy több előfordulása egymás után |
a 3,6 | A karakterek 3-6 előfordulása egymás után |
^ | A karakterlánc kezdete |
$ | A karaktersorozat vége |
\ b | Szóhatár. Ha egy karakter szó utolsó vagy első karaktere, vagy ha egy karakter szó vagy nem szó karakter között van |
\ B | Nem szóhatár |