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…)