Ko’p qatorli rejim m bayrog’i bilan yoqiladi.
U faqat ^ va $ ning harakatiga ta’sir qiladi.
Ko’p qatorli rejimda ular nafaqat satr boshi va oxirida, balki har bir qator boshi/oxirida ham mos keladi.
Qator boshida qidirish ^
Quyidagi misolda matn bir nechta qatorga ega. /^\d/gm naqshi har bir qator boshidan raqamni oladi:
let str = `1st place: Winnie
2nd place: Piglet
3rd place: Eeyore`;
alert( str.match(/^\d/gm) ); // 1, 2, 3
m bayrog’isiz faqat birinchi raqam topiladi:
let str = `1st place: Winnie
2nd place: Piglet
3rd place: Eeyore`;
alert( str.match(/^\d/g) ); // 1
Buning sababi, sukut bo’yicha karet ^ faqat matn boshida mos keladi, ko’p qatorli rejimda esa – har qanday qator boshida.
“Qator boshi” rasmiy ma’noda “qator uzilishidan darhol keyin” degani: ko’p qatorli rejimda ^ testi yangi qator belgisi \n dan oldin kelgan barcha pozitsiyalarda mos keladi.
Va matn boshida ham.
Qator oxirida qidirish $
Dollar belgisi $ ham xuddi shunday harakat qiladi.
\d$ doimiy ifodasi har bir qatordagi oxirgi raqamni topadi
let str = `Winnie: 1
Piglet: 2
Eeyore: 3`;
alert( str.match(/\d$/gm) ); // 1,2,3
m bayrog’isiz dollar $ faqat butun matn oxirida mos keladi, shuning uchun faqat eng oxirgi raqam topiladi.
“Qator oxiri” rasmiy ma’noda “qator uzilishidan darhol oldin” degani: ko’p qatorli rejimda $ testi yangi qator belgisi \n dan keyin keladigan barcha pozitsiyalarda mos keladi.
Va matn oxirida ham.
^ $ o’rniga \n qidirish
Yangi qatorni topish uchun biz nafaqat ^ va $ langarlardan, balki yangi qator belgisi \n dan ham foydalanishimiz mumkin.
Farq nimada? Keling, misolni ko’raylik.
Bu yerda biz \d$ o’rniga \d\n ni qidiraymiz:
let str = `Winnie: 1
Piglet: 2
Eeyore: 3`;
alert( str.match(/\d\n/gm) ); // 1\n,2\n
Ko’rib turganingizdek, 3 o’rniga 2 ta moslik bor.
Buning sababi 3 dan keyin yangi qator yo’q (lekin matn oxiri bor, shuning uchun u $ ga mos keladi).
Boshqa farq: endi har bir moslik yangi qator belgisi \n ni o’z ichiga oladi. Faqat shartni tekshiradigan (qator boshi/oxiri) ^ $ langarlardan farqli o’laroq, \n belgidir, shuning uchun u natijaning bir qismi bo’ladi.
Shunday qilib, naqshdagi \n natijada yangi qator belgilari kerak bo’lganda ishlatiladi, langarlar esa qator boshi/oxirida biror narsani topish uchun ishlatiladi.
Izohlar
<code>yorlig'ini ishlating, bir nechta satrlar uchun - ularni<pre>yorlig'i bilan o'rab qo'ying, 10 satrdan ortiq bo'lsa - sandbox (plnkr, jsbin, codepen…)