- Simvol sinifləri, kəmiyyət göstəriciləri və lövbərlərlə şablonları oxumaq və yazmaq
g,i,m,ubayraqlarından vətest,match,matchAll,replace,splitmetodlarından istifadə etmək- Adlı və adsız qruplarla verilənləri çıxarmaq və tipik tələlərdən qaçmaq
Telefon nömrəsinin +994 50 123 45 67 şəklində olduğunu yoxlamaq, paylaşımdakı bütün heşteqləri tapmaq, 2026-09-27 tarixini 27.09.2026-ya çevirmək — adi sətir metodları ilə hər tapşırıq onlarla sətir tələb edir. Müntəzəm ifadə (regular expression, regex) mətn şablonunu bir sətirdə təsvir edir. Əvvəlcə sirli görünür, amma az sayda kərpicdən qurulub — onları tanıyan kimi hər şey oxunaqlı olur.
Regex yaratmaq və ilk metodlar
Regex iki yolla yaradılır: literal /şablon/bayraqlar və ya şablon işləmə vaxtı qurulanda new RegExp('şablon', 'bayraqlar'). Əsas metodlar: regex.test(str) true/false qaytarır; str.match(regex) birinci uyğunluğu (g ilə — hamısını) verir; str.replace(regex, yeni) əvəz edir; str.split(regex) şablona görə bölür.
const text = 'Order 15 arrived. Order 27 is late. Call 555.';
console.log(/late/.test(text));
console.log(/LATE/i.test(text));
console.log(text.match(/\d+/)[0]);
console.log(text.match(/\d+/g));
console.log(text.replace(/Order/g, 'Parcel'));
console.log('a1b22c333'.split(/\d+/));▸ Gözlənilən nəticə
true true 15 [ '15', '27', '555' ] Parcel 15 arrived. Parcel 27 is late. Call 555. [ 'a', 'b', 'c', '' ]
Kərpiclər
| Şablon | Mənası |
|---|---|
. | sətir keçidindən başqa istənilən simvol |
\d \w \s | rəqəm; söz simvolu (latın hərfi, rəqəm, _); boşluq simvolu. Böyük hərf əksini bildirir: \D, \W, \S |
[abc] [a-z] [^0-9] | çoxluqdan bir simvol; aralıq; çoxluqda olmayan simvol |
* + ? | 0 və ya çox; 1 və ya çox; 0 və ya 1 |
{3} {2,5} | düz 3 dəfə; 2-dən 5-ə qədər |
^ $ \b | sətrin başlanğıcı; sonu; söz sərhədi |
a|b ( ) (?<name> ) | və ya; qrup; adlı qrup |
const patterns = {
postcode: /^AZ\d{4}$/,
phone: /^\+994 \d{2} \d{3} \d{2} \d{2}$/,
username: /^[a-z][a-z0-9_]{2,15}$/,
};
const samples = {
postcode: ['AZ1000', 'AZ100', 'az1000'],
phone: ['+994 50 123 45 67', '+994501234567'],
username: ['leyla_07', '7leyla', 'ab'],
};
for (const [name, regex] of Object.entries(patterns)) {
const results = samples[name].map((value) => `${value}: ${regex.test(value)}`);
console.log(`${name} -> ${results.join(', ')}`);
}▸ Gözlənilən nəticə
postcode -> AZ1000: true, AZ100: false, az1000: false phone -> +994 50 123 45 67: true, +994501234567: false username -> leyla_07: true, 7leyla: false, ab: false
+ xüsusi simvol olduğu üçün hərfən axtarmaq üçün \+ yazılır. İstifadəçi adı hərflə başlamalı və cəmi 3–16 simvol olmalıdır.Bayraqlar
g— qlobal: bütün uyğunluqlar (matchAllvə regex ilə işlədilənreplaceAllüçün lazımdır);i— böyük-kiçik hərf fərqi nəzərə alınmır;m— çoxsətirli:^və$hər sətrin başlanğıcı və sonudur;s—.sətir keçidinə də uyğun gəlir;u— Unicode: emoji və\p{L}(istənilən əlifbanın hərfi) düzgün işləyir.
const words = 'Gəncə şəhəri';
console.log(words.match(/\w+/g));
console.log(words.match(/\p{L}+/gu));
const poem = 'first line\nsecond line\nthird line';
console.log(poem.match(/^\w+/gm));▸ Gözlənilən nəticə
[ 'G', 'nc', 'h', 'ri' ] [ 'Gəncə', 'şəhəri' ] [ 'first', 'second', 'third' ]
\w yalnız ingilis əlifbasının hərflərini tanıyır, ona görə «ə» və «ş» sözləri parçalayır. Azərbaycan, rus və türk mətnləri üçün \p{L} və u bayrağını işlət.Qruplar və əvəzetmə
Mötərizələr uyğunluğun hissələrini tutur. g-siz match massiv qaytarır: [tam uyğunluq, qrup1, qrup2, ...], adlı qruplar isə .groups-dadır. matchAll (g tələb edir) bütün uyğunluqları qrupları ilə birlikdə verir. replace-də $1 və $<ad> qruplara istinad edir, əvəzedici funksiya isə uyğunluğu və qrupları arqument kimi alır.
const date = '2026-09-27';
const match = date.match(/^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})$/);
console.log(match[1], match.groups.month, match.groups.day);
console.log(date.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3.$2.$1'));
const post = 'Learning #javascript and #regex at #Educora';
const tags = [...post.matchAll(/#(\w+)/g)].map((m) => m[1].toLowerCase());
console.log(tags);
const prices = 'tea 2 AZN, bread 1 AZN';
console.log(prices.replace(/(\d+) AZN/g, (whole, amount) => `${amount * 2} AZN`));▸ Gözlənilən nəticə
2026 09 27 27.09.2026 [ 'javascript', 'regex', 'educora' ] tea 4 AZN, bread 2 AZN
const html = '<b>bold</b> and <i>italic</i>';
console.log(html.match(/<.*>/)[0]);
console.log(html.match(/<.*?>/g));
const hasDigit = /\d/g;
console.log(hasDigit.test('a1'), hasDigit.test('a1'), hasDigit.test('a1'));
console.log('1.5'.match(/\d.\d/)[0], '1x5'.match(/\d.\d/)[0], /\d\.\d/.test('1x5'));▸ Gözlənilən nəticə
<b>bold</b> and <i>italic</i> [ '<b>', '</b>', '<i>', '</i>' ] true false true 1.5 1x5 false
isStrongPassword(password) funksiyasını yaz: parol ən azı 8 simvoldan ibarət olmalı, ən azı bir rəqəm və bir böyük latın hərfi olmalıdır. Hər şərt üçün ayrıca regex və test işlət.
function isStrongPassword(password) {
// 8+ characters, a digit, an uppercase letter
}
for (const password of ['secret', 'Secret123', 'secretpass1', 'SECRETPASS']) {
console.log(`${password}: ${isStrongPassword(password)}`);
}▸ Gözlənilən nəticə
secret: false Secret123: true secretpass1: false SECRETPASS: false
Mətndəki bütün GG.AA.İİİİ tarixlərini ISO formatına — İİİİ-AA-GG — çevir və nəticəni çap et. Sonra mətndə neçə tarix olduğunu Dates: N şəklində çap et.
const text = 'Exams: 05.06.2026 and 12.06.2026. Holidays from 20.06.2026.';
// 1) replace every DD.MM.YYYY with YYYY-MM-DD and print the text
// 2) print Dates: N▸ Gözlənilən nəticə
Exams: 2026-06-05 and 2026-06-12. Holidays from 2026-06-20. Dates: 3
Əsas fikirlər
- Regex mətn şablonudur:
/şablon/bayraqlarvə yanew RegExp(...). - Kərpiclər: siniflər (
\d,\w,[a-z]), kəmiyyət göstəriciləri (+,*,?,{n,m}), lövbərlər (^,$,\b), qruplar və|. - Bayraqlar:
g— hamısı,i— böyük-kiçik hərfə baxmadan,m— çoxsətirli,u— Unicode (\p{L}). testyoxlayır,match/matchAllçıxarır,replaceisə$1,$<ad>və ya funksiya ilə çevirir.- Yoxlama şablonlarını lövbərlə; acgöz
.*,gilətest-dəkilastIndexvə ekranlaşdırılmamış xüsusi simvollardan ehtiyat et.
Özünü yoxla
10 sual. Hər düzgün cavab XP qazandırır.
/^\d{3}$/ hansı sətrə uyğundur?