Homepage » Coding » Kezdő útmutató a rendszeres kifejezéshez (Regex)

    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

    Most olvasd el: Rendszeres kifejezések: 30 Hasznos eszközök és erőforrások