Felhasználói eszközök

Eszközök a webhelyen


oktatas:web:javascript:regex

< JavaScript

JavaScript Regex

  • Szerző: Sallai András
  • Copyright © Sallai András, 2015, 2017, 2021
  • Licenc: GNU Free Documentation License 1.3

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ő”

Linkek

oktatas/web/javascript/regex.txt · Utolsó módosítás: 2021/02/21 16:21 szerkesztette: admin