Sady znaků v regulárních výrazech JavaScriptu
Skupiny znaků \d a \w nejsou
příliš flexibilní. Dokonce i tak jednoduchý úkol,
jako najít všechna písmena, ale ne číslice -
jimi nemůže být vyřešen. Pro takové úkoly
by se měly použít hranaté závorky, které představují
operaci 'nebo'.
Hranaté závorky nahrazují jeden znak,
jakýkoli z těch uvnitř. Například
takto: /x[abc]x/ - říkáme, že
na okrajích musí být písmena x, a uvnitř
- jeden znak: nebo 'a', nebo 'b',
nebo 'c'.
Za hranatými závorkami lze psát operátory
opakování. Například takto: /x[abc]+x/
- říkáme, že uvnitř x může být
libovolný počet znaků 'a', 'b'
a 'c' - v libovolných kombinacích.
Lze nejen vypisovat znaky, ale vytvářet
skupiny znaků tak, že mezi dva znaky
napíšeme pomlčku. Například takto: [a-d] -
získáme všechny znaky od 'a' do
'd'.
Podívejme se na příklady.
Příklad
V tomto příkladu vypadá vzor hledání takto:
mezi x libovolné písmeno od 'a'
do 'z':
let str = 'xax xbx xcx x@x';
let res = str.replace(/x[a-z]x/g, '!');
Výsledek zapsaný do proměnné bude následující:
'! ! ! x@x'
Příklad
V tomto příkladu vypadá vzor hledání takto:
mezi x libovolné písmeno od 'a'
do 'k':
let str = 'xax xbx xmx x@x';
let res = str.replace(/x[a-k]x/g, '!');
Výsledek zapsaný do proměnné bude následující:
'! ! xmx x@x'
Příklad
V tomto příkladu vypadá vzor hledání takto:
mezi x libovolné písmeno od 'A'
do 'Z':
let str = 'xax xBx xcx x@x';
let res = str.replace(/x[A-Z]x/g, '!');
Výsledek zapsaný do proměnné bude následující:
'xax ! xcx x@x'
Příklad
V tomto příkladu vypadá vzor hledání takto:
mezi x libovolná číslice od 0 do 9:
let str = 'xax x1x x3x x5x x@x';
let res = str.replace(/x[0-9]x/g, '!');
Výsledek zapsaný do proměnné bude následující:
'xax ! ! ! x@x'
Příklad
V tomto příkladu vypadá vzor hledání takto:
mezi x libovolná číslice od 3 do 7:
let str = 'xax x1x x3x x5x x@x';
let res = str.replace(/x[3-7]x/g, '!');
Výsledek zapsaný do proměnné bude následující:
'xax x1x ! ! x@x'
Příklad
V tomto příkladu vypadá vzor hledání takto:
mezi x libovolné písmeno od 'a'
do 'z' nebo číslice od 1 do 9:
let str = 'xax x1x x3x x5x x@x';
let res = str.replace(/x[a-z1-9]x/g, '!');
Výsledek zapsaný do proměnné bude následující:
'! ! ! ! x@x'
Příklad
V tomto příkladu vypadá vzor hledání takto:
mezi x libovolné písmeno od 'a'
do 'z' nebo písmeno od 'A' do
'Z':
let str = 'xax xBx xcx x5x x@x';
let res = str.replace(/x[a-zA-Z]x/g, '!');
Výsledek zapsaný do proměnné bude následující:
'! ! ! x5x x@x'
Příklad
V tomto příkladu vypadá vzor hledání takto:
mezi x libovolné písmeno od 'a'
do 'z' nebo číslice 1, 2:
let str = 'xax xbx x1x x2x x3x';
let res = str.replace(/x[a-z12]x/g, '!');
Výsledek zapsaný do proměnné bude následující:
'! ! ! ! x3x'
Příklad
V tomto příkladu vypadá vzor hledání takto:
mezi x písmena od 'a' do 'z'
v počtu od 1 a více:
let str = 'xx xabesx xaadx x123x xa3x';
let res = str.replace(/x[a-z]+x/g, '!');
Výsledek zapsaný do proměnné bude následující:
'xx ! ! ! x123x xa3x'
Příklad
Udělejme to tak, aby počet písmen mohl být i nula:
let str = 'xx xabesx xaadx x123x xa3x';
let res = str.replace(/x[a-z]*x/g, '!');
Výsledek zapsaný do proměnné bude následující:
'! ! ! ! x123x xa3x'
Praktické úlohy
Je dán řetězec:
let str = 'aba aea aca aza axa';
Napište regulární výraz, který najde podle následujícího
vzoru: na okrajích jsou písmena 'a',
a mezi nimi - písmeno 'b', 'e'
nebo 'x'.
Je dán řetězec:
let str = 'a1a a3a a7a a9a aba';
Napište regulární výraz, který najde podle následujícího
vzoru: na okrajích jsou písmena 'a',
a mezi nimi - číslice od 3-ch do 6-ti.
Je dán řetězec:
let str = 'aba aea afa aha aga';
Napište regulární výraz, který najde podle následujícího
vzoru: na okrajích jsou písmena 'a',
a mezi nimi - písmeno od a do g.
Je dán řetězec:
let str = 'aba aea afa aha aga';
Napište regulární výraz, který najde podle následujícího
vzoru: na okrajích jsou písmena 'a',
a mezi nimi - písmeno od a do f a od j do z.
Je dán řetězec:
let str = 'aAa aea aEa aJa a3a';
Napište regulární výraz, který najde podle následujícího
vzoru: na okrajích jsou písmena 'a',
a mezi nimi - písmeno od a do f a od A do D.
Je dán řetězec:
let str = 'aAXa aeffa aGha aza ax23a a3sSa';
Napište regulární výraz, který najde podle následujícího
vzoru: na okrajích jsou písmena 'a',
a mezi nimi - malá latinská písmena,
aniž by se dotkl ostatních.
Je dán řetězec:
let str = 'aAXa aeffa aGha aza ax23a a3sSa';
Napište regulární výraz, který najde podle následujícího
vzoru: na okrajích jsou písmena 'a',
a mezi nimi - malá a velká latinská
písmena, aniž by se dotkl ostatních.
Je dán řetězec:
let str = 'aAXa aeffa aGha aza ax23a a3sSa';
Napište regulární výraz, který najde podle následujícího
vzoru: na okrajích jsou písmena 'a',
a mezi nimi - malá latinská písmena
a číslice, aniž by se dotkl ostatních.