Grupy znaków w wyrażeniach regularnych JavaScript
Istnieją specjalne komendy, które pozwalają
wybrać od razu całe grupy znaków. Komenda
\d oznacza cyfrę od 0 do 9.
Komenda \w oznacza cyfrę, łacińską
literę lub znak podkreślenia. Komenda \s
oznacza spację lub znak spacji:
spację, znak nowej linii, tabulację. Można
odwrócić znaczenie komendy, pisząc wielką
literę: na przykład, jeśli \d - cyfra,
to \D - nie cyfra.
Przykład
Znajdźmy wszystkie cyfry:
let str = '1 12 123';
let res = str.replace(/\d/g, '!');
W wyniku do zmiennej zapisze się następująco:
'! !! !!!'
Przykład
Operatory powtórzenia traktują komendy-grupy
jako całość, to znaczy nawiasy grupujące
nie są potrzebne. W następnym przykładzie wzorzec wyszukiwania
wygląda tak: cyfra od 0 do 9
jeden lub więcej razy:
let str = '1 12 123 abc @@@';
let res = str.replace(/\d+/g, '!');
W wyniku do zmiennej zapisze się następująco:
'! ! ! abc @@@'
Przykład
W następnym przykładzie wzorzec wyszukiwania wygląda
tak: cokolwiek jeden lub więcej razy,
ale nie cyfra od 0 do 9:
let str = '123abc3@@';
let res = str.replace(/\D+/g, '!');
W wyniku do zmiennej zapisze się następująco:
'123!3!'
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda tak: znak spacji jeden raz:
let str = '1 12 123 abc @@@';
let res = str.replace(/\s/g, '!');
W wyniku do zmiennej zapisze się następująco:
'1!12!123!abc!@@@'
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda tak:
NIE znak spacji jeden lub więcej razy.
Wszystkie podciągi, oddzielone spacjami, zostaną zastąpione
na '!':
let str = '1 12 123 abc @@@';
let res = str.replace(/\S+/g, '!');
W wyniku do zmiennej zapisze się następująco:
'! ! ! ! !'
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda tak:
cyfra lub litera jeden lub więcej razy.
Wszystkie podciągi, składające się z cyfr i liter,
zostaną zastąpione na '!':
let str = '1 12 123a Abc @@@';
let res = str.replace(/\w+/g, '!');
W wyniku do zmiennej zapisze się następująco:
'! ! ! ! @@@'
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda tak:
NIE cyfra i NIE litera jeden lub więcej razy.
W rozpatrywanym przypadku do tej definicji kwalifikuje się
'@@@' i wszystkie spacje (one przecież też
nie są cyframi ani literami). Zwróć uwagę na
to, że na końcu jedna '!' - w nią
przekształcił się ciąg ' @@@' - ze
spacją na początku:
let str = '1 12 123 Abc @@@';
let res = str.replace(/\W+/g, '!');
W wyniku do zmiennej zapisze się następująco:
'1!12!123!Abc!'
Zadania praktyczne
Dany jest ciąg:
let str = 'a1a a2a a3a a4a a5a aba aca';
Napisz wyrażenie regularne, które znajdzie ciągi,
w których na brzegach stoją litery 'a',
a między nimi jedna cyfra.
Dany jest ciąg:
let str = 'a1a a22a a333a a4444a a55555a aba aca';
Napisz wyrażenie regularne, które znajdzie ciągi,
w których na brzegach stoją litery 'a',
a między nimi dowolna liczba cyfr.
Dany jest ciąg:
let str = 'aa a1a a22a a333a a4444a a55555a aba aca';
Napisz wyrażenie regularne, które znajdzie ciągi,
w których na brzegach stoją litery 'a',
a między nimi dowolna liczba cyfr (w tym
również zero cyfr, to znaczy ciąg 'aa').
Dany jest ciąg:
let str = 'avb a1b a2b a3b a4b a5b abb acb';
Napisz wyrażenie regularne, które znajdzie ciągi
następującego rodzaju: na brzegach stoją litery
'a' i 'b', a między nimi - nie
liczba i nie spacja.
Dany jest ciąg:
let str = 'ave a#b a2b a$b a4b a5b a-b acb';
Napisz wyrażenie regularne, które znajdzie ciągi
następującego rodzaju: na brzegach stoją litery
'a' i 'b', a między nimi - nie
litera, nie cyfra i nie spacja.
Dany jest ciąg:
let str = 'ave a#a a2a a$a a4a a5a a-a aca';
Napisz wyrażenie regularne, które zamieni wszystkie spacje
na '!'.