JavaScript Regular İfadələrində Dəstlər Daxilində Defis
Defis - [ ] daxilində də xüsusi simvoldur
(ancaq xaricində - deyil). Əgər sizə defis özü
simvol kimi lazımdırsa - onu qrup ayırıcısı kimi
qəbul edilməyəcəyi yerdə qoyun.
Bu niyə vacibdir: siz özünüz də hiss etmədən
simvol qrupu yarada bilərsiniz. Məsələn,
bununla - '[:-@]' - siz düşünürsünüz ki,
nöqtəli vergül, defis və işarəni seçirsiniz, amma
əslində : və @ arasındakı simvol
qrupu alınır. Bu qrupa aşağıdakı simvollar daxildir:
? < = > : ;
Onlar hardan gəldi? ASCII cədvəlindən - nöqtəli vergülün nömrəsi işarədən kiçikdir - və beləliklə qrup alınır. Yəni bütün qruplar ASCII cədvəlinə görə alınır (istəsəniz bundan istifadə edə bilərsiniz).
Bununla necə mübarizə aparmaq olar: defis simvolunu
onun qrup simvolu kimi mütləq qəbul edilməyəcəyi yerdə
qoyun, məsələn, əvvəlində və ya sonunda
(yəni [-dən sonra və ya ]-dən əvvəl).
Həmçinin defisi ekranlaşdıra bilərsiniz - onda
o, mövqeyindən asılı olmayaraq özünü ifadə edəcək.
Məsələn, [:-@] əvəzinə
[:\-@] yazın - və artıq qrup olmayacaq,
üç simvol olacaq - nöqtəli vergül, defis və işarə
@.
Nümunə
Aşağıdakı nümunədə axtarış şablonu belədir:
rəqəm 1, sonra 'a'-dan
'z'-a qədər hərf, sonra rəqəm 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a-z]2/g, '!');
Nəticədə dəyişənə aşağıdakı yazılacaq:
'! 1-2 ! !'
Nümunə
Gəlin indi defisi ekranlaşdıraq. Nəticədə
axtarış şablonu belədir: rəqəm 1, sonra
'a' hərfi, ya defis, ya da 'z' hərfi,
sonra rəqəm 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a\-z]2/g, '!');
Nəticədə dəyişənə aşağıdakı yazılacaq:
'! ! 1c2 !'
Nümunə
Onu ekranlaşdırmadan, sadəcə defisi yerini dəyişmək olar:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[az-]2/g, '!');
Nəticədə dəyişənə aşağıdakı yazılacaq:
'! ! 1c2 !'
Nümunə
Aşağıdakı nümunədə axtarış şablonu belədir:
birinci simvol - kiçik hərflər və ya
defis '-', sonra iki 'x' hərfi:
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-z-]xx/g, '!');
Nəticədə dəyişənə aşağıdakı yazılacaq:
'! Axx ! @xx'
Nümunə
Aşağıdakı nümunədə axtarış şablonu belədir:
birinci simvol - kiçik, böyük
hərflər və ya defis '-', sonra iki
'x' hərfi:
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-zA-Z-]xx/g, '!');
Nəticədə dəyişənə aşağıdakı yazılacaq:
'! ! ! @xx'
Nümunə
Defisi iki qrup arasında yerləşdirmək olar - orada o, əminliklə başqa bir qrup yaratmayacaq:
let str = 'axx 9xx -xx @xx';
let res = str.replace(/[a-z-0-9]xx/g, '!');
Nəticədə dəyişənə aşağıdakı yazılacaq:
'! ! ! @xx'
Praktiki Tapşırıqlar
Verilmiş sətir:
let str = 'xaz xBz xcz x-z x@z';
Aşağıdakı şablona uyğun bütün sətirləri tapın:
'x' hərfi, böyük və ya kiçik
hərf və ya defis, 'z' hərfi.
Verilmiş sətir:
let str = 'xaz x$z x-z xcz x+z x%z x*z';
Aşağıdakı şablona uyğun bütün sətirləri tapın:
'x' hərfi, sonra ya dollar, ya
defis, ya da plus, sonra 'z' hərfi.