Tartalomjegyzék
JavaScript Regex
- Szerző: Sallai András
- Copyright © Sallai András, 2015, 2017, 2021
- Licenc: GNU Free Documentation License 1.3
- Web: https://szit.hu
Bevezetés
A Regex a Regular Expressions rövidítése, magyarul szabályos kifejezések. A szabályos kifejezések lehetővé teszik karakterek egyeztetését karaktersorozatokban. Használható objektumok és függvények:
- RegExp
- exec()
- test()
- String
- match()
- replace()
- search()
- split()
Szabályos kifejezések készítése
A szabályos kifejezések mintáit két / karakter között adjuk meg. A második perjel után módosítók adhatók meg. Szintaxis:
/minta/módosítók;
A szabályos kifejezések tárolhatók változókban:
var szabalyosKifejezes = /ab+/;
Létrehozás RegExp() konstruktorral:
var szabalyosKifejezes = new RegExp('ab+');
Példa módosítóval:
var szabalyosKifejezes = /szit/i;
Példa replace() függvénnyel:
function noSpace(x){ return x.replace(/ /g, ""); }
A példában a npSpace függvény töröl minden szóközt az x-ből.
Gyakorlat
Igen nem válasz
Vizsgáljuk meg, hogy a válasz igen, vagy más. Igennek vesszük, ha a szövegben található (i) betű.
var valasz = 'igen'; var valaszMinta = /i/; if (valasz.match(valaszMinta)) { console.log('Ok'); }else { console.log('Nem ok'); }
A válaszban valahol szerepelnie kell egy (i) betűnek.
Találat esetén egy objektumot kapunk:
- [„i”, index: 0, input: „igen”, groups: undefined]
Ha nincs találat:
- null
Ha az illeszkedést csak akkor szeretnénk, ha az i betű a sor elején van, akkor tegyük egy (^) karaktert az (i) elé.
var valaszMinta = /^i/;
Ha csak az (i) betűt szeretnénk elfogadni, akkor tegyünk illeszkedést a sor végére is:
var valaszMinta = /^i$/;
i vagy n
Elfogadjuk az (i) és az (n) karaktert. Szögletes zárójelek között megadhatjuk a lehetséges karaktereket.
var valaszMinta = /^[in]$/;
A szögletes zárójelek között megadott karakterek mindig 1 darab karaktert jelentenek. Esetünkben 1 darab (i) vagy 1 darab (n) betűt.
Érdemjegyek vizsgálata
Az érdemjegyben szerepelnie kell számoknak. A lehetséges számjegyek csak 1, 2, 3, 4 vagy 5.
var valaszMinta = /^[12345]$/;
Megadható intervallum formájában is:
var valaszMinta = /^[1-5]$/;
Módosítók
A módosítókat mindig a két (/) karakter után írjuk. A mintailleszkedésen kicsit módosítanak.
Módosító | Leírás |
---|---|
i | Kis- és nagybetű érzékenység kikapcsolva |
g | globális egyezés, az összes egyezést megkeresi másként csak az elsőként előfordulóra érvényes |
m | Többsoros egyezés |
Módosítók gyakorlat
A következő példában elfogadjuk a kis és nagy (i) betűket is:
var valasz = 'I'; var valaszMinta = /^i$/i;
Speciális karakterek a szabályos kifejezésekben
Egyezés | Leírás |
---|---|
\ | A backslash karakterrel azt mondjuk meg, hogy a következő karakternem nem szeretnénk speciálisként értelmezni |
^ | Illeszkedés a sor elejére |
$ | Illeszkedés a sor végére |
. | Minden karakterre egyezik az új sor és a kocsi-vissza kivételével |
(x) | Csoportok létrehozása. A csoportokra később hivatkozhatunk \1 az első csoport. \2 a második csoport. |
\w | Egy szó egy karaktere. |
\W | Ami nem egy szó karaktere. |
\d | Számra egyezik. |
\D | Nem számra egyezik. |
\s | White-space karakterre illeszkedik. |
\S | Nem white-space karakterre illeszkedik. |
\b | Szó előtt és szó utáni karakterre illeszkedik. |
\B | Minden ami nem a szó előtt és nem a szó után van. |
\0 | NUL karakter. |
\n | Újsor |
\f | Lapdobás |
\r | Kocsi vissza karakter |
\t | Tabulátor |
\v | Vertikális tabulátor |
\xxx | Karakterkód oktális számmal |
\xdd | Karakterkód hexadecimális számmal |
\uxxxx | Unicode karakter hexadecimálisan |
Példa a csoportokra hivatkozásra.
var s = "valamiaaaavalami"; alert( /(val)(ami).*\1\2/.test(s) );
A fenti példa true értéket jelenít meg, mivel a „val” és az „ami” szó szerepel a szó elején és a végén is. A \1 az első csoportot jelenti, a \2 a második csoportot.
Sokszorozók
Szimbólum | Leírás |
---|---|
+ | Az előtte lévő karakter egyszer vagy többször |
* | Az előtte lévő karakter nullaszor vagy többször |
? | Az előtte lévő karakter nullaszor vagy egyszer |
{n} | Az előtte lévő karakter pontosan n-szer |
{n,m} | Az előtte lévő karakter n-től m-ig. |
{n,} | Az előtte lévő karakter legalább n-szer. |
Karakterosztályok
Jelölés | Leírás |
---|---|
[abc] | Egyetlen karakter, vagy „a”, vagy „b”, vagy „c” betű |
[a-z] | Egyetlen karakter a és z között |
[A-Z] | Egyetlen karakter A és Z között |
[^abc] | Egyetlen karakter, amely nem a szögletes zárójelek közötti karakter. Kizárás |
Az [a-z.] megegyezik a \w jelöléssel.
Vagy
Jelölés | Leírás |
---|---|
a|b | Vagy „a” vagy „b” |
Függvények
Függvények | |
---|---|
Függvény | Leírás |
RegEx metódusai | |
test() | var str = „valami”; var res = /val/.test(str); res értéke true |
exec() | var str = „valami”; var res = /val/.exec(str); res értéke „val” |
String metódusai | |
match() | var str = „valami”; var res = str.match(/val/); res tartalma: „val”, egyébként null |
replace() | var str = „valami”; var res = str.replace(/val/, „—”); res értéke —ami |
search() | var str = „mégvalami”; var res = str.search(/val/); res eredménye 4 |
split() | var str = „egy:kettő:három”; var res = str.split(/:/); res[1] eredménye „kettő” |