JavaScript регуляр ифодаларида кўп қatorlik

Регуляр ифодалар кўп қatorli сатрлар билан ишлашда ўзига хос хусусиятларга эга. Келинг, уларни куйидаги сатр мисолида кўрамиз, унда оддий белгилар, қator алмаштириш белгилари ва табуляция белгилари мавжуд:

javascriptlet str = `111
  222
  333
  444`;

Қator алмаштириш

Қator алмаштириш белгиларини '\n' буйруги ёрдамида топиш мумкин:

javascriptlet res = str.replace(/\n/g, '!');

Натижада ўзгарувчига куйидагилар ёзилади (қatorлар орасидаги бўшлиқлар табуляция):

javascript`111!  222!  333!  444`;

Табуляция

Табуляция белгиларини '\t' буйруги ёрдамида топиш мумкин:

javascriptlet res = str.replace(/\t/g, '!');

Натижада ўзгарувчига куйидагилар ёзилади:

javascript`
                111
                !222
                !333
                !444
            `;

Нуқтанинг иши

'.' буйруги кўп қatorли сатр учун қator алмаштириш белгиларини тутмайди:

javascriptlet res = str.replace(/./g, '!');

Натижада ўзгарувчига куйидагилар ёзилади:

javascript`
                !!!
                !!!!
                !!!!
                !!!!
            `;

Ихтиёрий белги

Кўп қatorли сатрдаги барча белгиларни топиш учун [\s\S] кўринишидаги маъкул усул ишлатилади. Бундай конструкция барча оддий белгилар ва барча қator алмаштиришларни топади:

javascriptlet res = str.replace(/[\s\S]/g, '!');

Натижада ўзгарувчига куйидагилар ёзилади:

javascript`!!!!!!!!!!!!!!!!!!`;

Шляпка

'm' модификатори ёрдамида кўп қatorли режимни ёқиш мумкин. Бу ҳолатда шляпка ҳар бир қatorнинг бошланишини топади:

javascriptlet res = str.replace(/^/gm, '!');

Натижада ўзгарувчига куйидагилар ёзилади:

javascript`
                !111
                !222
                !333
                !444
            `;

Доллар

' буйруги кўп қatorли режимда ҳар бир қatorнинг охирини топади:

javascriptlet res = str.replace(/$/gm, '!');

Натижада ўзгарувчига куйидагилар ёзилади:

javascript`
                111!
  222!
  333!
  444!
            `;

Амалий машқлар

Задание 1

Сатр берилган:

javascript`
  abc
  def
  ghi
  jkl
`;

Ушбу сатрни куйидагига айлантирадиган регуляр ифодани ёзинг:

javascript`
  abc!
  def!
  ghi!
  jkl!
`;
Задание 2

Сатр берилган:

javascript`
  abc
  def
  ghi
  jkl
`;

Ушбу сатрни куйидагига айлантирадиган регуляр ифодани ёзинг:

javascript`
!  abc
!  def
!  ghi
!  jkl
`;
Задание 3

Сатр берилган:

javascript`
  abc
  def
  ghi
  jkl
`;

Ушбу сатрни куйидагига айлантирадиган регуляр ифодани ёзинг:

javascript`!
  abc
  def
  ghi
  jkl
!`;
Задание 4

Сатр берилган:

javascript`
  abc
  def
  ghi
  jkl
`;

Ушбу сатрни куйидагига айлантирадиган регуляр ифодани ёзинг:

javascript`!
!  abc
!  def
!  ghi
!  jkl
!`;
Задание 5

Сатр берилган:

javascript`
  abc
  def
  ghi
  jkl
`;

Ушбу сатрни куйидагига айлантирадиган регуляр ифодани ёзинг:

javascript`!
  abc!
  def!
  ghi!
  jkl!
!`;
Задание 6

Сатр берилган:

javascript`
  abc
  def
  ghi
  jkl
`;

Ушбу сатрни куйидагига айлантирадиган регуляр ифодани ёзинг:

javascript`
                    !abc
                    !def
                    !ghi
                    !jkl
`;