Цртица унутар скупова у регуларним изразима ЈаваСкрипт
Цртица је такође специјални знак унутар [ ]
(а споља - није). Ако вам је потребна сама
цртица као знак - поставите је тамо,
где неће бити схваћена као раздвајач
групе.
Зашто је ово важно: можете направити групу
знакова, а да то ни сами не приметите. На пример,
овако - '[:-@]' - мислите да
изабирате двотачку, цртицу и знак @, а
у ствари добијате се група знакова између
: и @. У ову групу спадају
следећи знакови: ? < = > : ;
Одакле су се појавили? Из табеле ASCII - двотачка има мањи број, него знак @ - и добија се група. То јест све групе добијају се према ASCII табели (ако желите тим се може користити).
Како се борити са тим: поставите знак цртице
тамо, где сигурно неће бити схаваћен као
знак групе, на пример, на почетку или на крају
(то јест после [или испред ]).
Може се такође екранирати цртица - тада
ће она означавати саму себе независно од
позиције. На пример, уместо [:-@] написати
[:\-@] - и групе већ неће бити, а
биће три знака - двотачка, цртица и знак
@.
Пример
У следећем примеру шаблон претраге је овакав:
цифра 1, затим слово од 'a'
до 'z', затим цифра 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a-z]2/g, '!');
У резултату у променљиву ће се уписати следеће:
'! 1-2 ! !'
Пример
Хајде сада да екранирамо цртицу. У резултату
шаблон претраге је овакав: цифра 1, затим
слово 'a', или цртица, или слово 'z',
затим цифра 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a\-z]2/g, '!');
У резултату у променљиву ће се уписати следеће:
'! ! 1c2 !'
Пример
Може се једноставно преместити цртица, не екранирајући је:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[az-]2/g, '!');
У резултату у променљиву ће се уписати следеће:
'! ! 1c2 !'
Пример
У следећем примеру шаблон претраге је овакав:
први знак - то су мала слова или
цртица '-', затим два слова 'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-z-]xx/g, '!');
У резултату у променљиву ће се уписати следеће:
'! Axx ! @xx'
Пример
У следећем примеру шаблон претраге је овакав:
први знак - то су мала, велика
слова или цртица '-', затим два слова
'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-zA-Z-]xx/g, '!');
У резултату у променљиву ће се уписати следеће:
'! ! ! @xx'
Пример
Може се поставити цртица између две групе - тамо сигурно још неће направити још једну групу:
let str = 'axx 9xx -xx @xx';
let res = str.replace(/[a-z-0-9]xx/g, '!');
У резултату у променљиву ће се уписати следеће:
'! ! ! @xx'
Практични задаци
Дат је низ:
let str = 'xaz xBz xcz x-z x@z';
Пронађите све низове према следећем шаблону:
слово 'x', велико или мало
слово или цртица, слово 'z'.
Дат је низ:
let str = 'xaz x$z x-z xcz x+z x%z x*z';
Пронађите све низове према следећем шаблону:
слово 'x', затим или знак долара, или
цртица или знак плус, затим слово 'z'.