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óbabemenet | Teljes mezőként elfogadható a megadott szabály szerint? | Ok |
|---|---|---|
| AB1234 | Igen | Két nagy A–Z betű és négy 0–9 számjegy |
| AB1234 után LF sortörés | Nem | A mező a hat karakteren túl sortörést is tartalmaz |
| ab1234 | Nem | A kisbetűket a szabály nem engedi |
| AB١٢٣٤ | Nem | Az 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.