Digitális és informatikai

Reguláris kifejezés tesztelése: a részleges találat még nem érvényes mező

Regex részlettalálat és teljes mezőellenőrzés, kipróbált JavaScript-határesetekkel. Sorvégi sortörés, többsoros mód, kisbetű és eltérő számjegykészlet.

Dajka Gábor4 perc olvasás

Reguláris kifejezéssel végzett mezőellenőrzéshez a teljes elfogadási szabályt írd le: engedett karakterek, hossz, szóközkezelés és sortörés. Egy jó részlettalálat kevés a teljes mező elfogadásához. A mintát a használt motorral és kapcsolókkal együtt kell kipróbálnod.

A minta jelentése

A [A-Z]{2}[0-9]{4} minta két A–Z közötti betűt és négy 0–9 közötti számjegyet keres. Az AB1234 megfelel ennek a részletmintának. Az xxAB1234yy szövegben azonban ugyanúgy található megfelelő részlet, miközben az egész mező nem a kívánt formátumú.

A ^ és $ horgonyok viselkedése a motortól és a kapcsolóktól függ. JavaScriptben m kapcsoló nélkül a bemenet elejét és végét jelentik. Az m többsoros kapcsolóval sorhatárra is illeszkednek, így a $ a sorvégi sortörés előtti pozíciót is elfogadhatja.

Írj elfogadási és elutasítási példákat

A fenti szabályhoz legyen elfogadott példa AB1234 és ZZ0001. Elutasítandó az A1234, az AB12345, az ab1234, az xxAB1234 és a szóközzel körbevett alak, ha a szabály nem enged tisztítást. A sorvégi sortörést külön teszteld.

Szigorú mezőellenőrzésnél vizsgálható az is, hogy a talált rész hossza megegyezik-e a teljes bemenet hosszával. Ne kapcsold be automatikusan a kis- és nagybetűt összemosó módot, ha a szabály kifejezetten nagybetűt kíván.

A formátum és a létezés külön kérdés

Egy megfelelő alakú azonosító még lehet nem létező vagy más felhasználóhoz tartozó. A regex csak a leírt szerkezetet ellenőrzi. A tényleges azonosítót az azt kezelő rendszerben is vizsgálni kell.

A tesztelőben rögzítsd a használt regexmotort, a kapcsolókat és a bemenettisztítás lépéseit. Az „előbb levágjuk a szóközöket” már külön üzleti szabály. Az ellenőrzés akkor követhető, ha a sikeres és sikertelen példák együtt maradnak a mintával.

Ugyanaz a JavaScript-minta két kapcsolóbeállítással

A ^[A-Z]{2}[0-9]{4}$ mintát vizsgáljuk. Az AB1234 önmagában megfelel. Ha utána egy LF sortörés is szerepel, m kapcsoló nélkül nincs találat, m kapcsolóval viszont a hatkarakteres sorra van. Ezért teljes mező ellenőrzéséhez ne engedd be a többsoros módot pusztán azért, mert több próbát írtál egymás alá a tesztelőbe.

PróbabemenetTeljes mezőként elfogadható a megadott szabály szerint?Ok
AB1234IgenKét nagy A–Z betű és négy 0–9 számjegy
AB1234 után LF sortörésNemA mező a hat karakteren túl sortörést is tartalmaz
ab1234NemA kisbetűket a szabály nem engedi
AB١٢٣٤NemAz arab–indiai számjegyek kívül esnek a 0–9 karaktertartományon

Ha a program előbb tisztítja a bemenetet, külön teszteld a tisztítás előtti és utáni alakot. Az AB1234 végéről levágott sortörés megváltoztatja az elfogadási szabály alkalmazását. A példához rögzített ASCII-betűket és -számjegyeket várunk; más nyelvi karakterkészlet támogatását külön kell megtervezni.

Kapcsolódó DG Kalkulátor megnyitása

Forrás és módszertani háttér

A számpéldák saját szemléltető számítások.

Háromkérdéses tudáspróba

Válassz kérdésenként egy választ, és jegyezd fel az A, B vagy C betűt. Előbb oldd meg mindhárom feladatot, utána nézd meg a megoldásokat.

1. Az xxAB1234yy tartalmazza a részletmintát?

  • A) Igen
  • B) Csak számként
  • C) Nem

2. Mire jó az elutasítási példák listája?

  • A) Az adatbázis helyettesítésére
  • B) A túl megengedő minta felismerésére
  • C) Csak a sebesség növelésére

3. Az AB1234 után LF sortörés is áll. A ^[A-Z]{2}[0-9]{4}$ JavaScript-minta m kapcsolóval találatot ad. Bizonyítja ez a teljes mező megfelelőségét?

  • A) Igen, a horgonyok minden kapcsoló mellett az egész mezőt jelentik
  • B) Igen, a sortörés soha nem része a bemenetnek
  • C) Nem: a többsoros mód a hatkarakteres sort illesztheti, miközben a mezőben plusz sortörés van

Megoldások és önálló pontozás

Minden helyes válasz 1 pont; a hibás vagy kihagyott válasz 0 pont. Legfeljebb 3 pont szerezhető. 3 pont: Felismerted a részlettalálatot és a kapcsolóbeállításból eredő téves elfogadást, majd a teljes mező szabályához kötötted a döntést. 2 pont: nézd át az eltévesztett kérdésnél megnevezett részt, és számold újra annak példáját. 0–1 pont: haladj végig a három megoldáson, majd oldd meg újra a kérdéseket. Ez a rövid próba a cikk összefüggéseinek megértését ellenőrzi.

1. megoldás

A) Igen – A keresés belső részletre is találhat. Ha más választ adtál vagy kihagytad, ezt a részt ismételd át: A minta jelentése.

2. megoldás

B) A túl megengedő minta felismerésére – A helyes alakok mellett a téves elfogadásokat is vizsgálni kell. Ha más választ adtál vagy kihagytad, ezt a részt ismételd át: Írj elfogadási és elutasítási példákat.

3. megoldás

C) Nem: a többsoros mód a hatkarakteres sort illesztheti, miközben a mezőben plusz sortörés van – m módban a $ sorvégi pozícióra is illeszkedik. A teljes bemenet hét kódegység, a szabály pedig pontosan hat megadott karaktert enged; a találat emiatt túl megengedő mezőellenőrzést jelentene. Ha más választ adtál vagy kihagytad, ezt a részt ismételd át: Ugyanaz a JavaScript-minta két kapcsolóbeállítással.

További cikkek

Kapcsolódó olvasnivalók

Gyorskereső

Kalkulátorok és útmutatók keresése

↑↓ választásEnter megnyitásEsc bezárás