Многоредовост в регулярните изрази на JavaScript
Регулярните изрази при работа с многоредови низове имат своите особености. Нека да ги разгледаме на примера на следния низ, съдържащ обикновени символи, символи за нов ред и табулации:
let str = `111
222
333
444`;
Нов ред
Символите за нов ред могат да бъдат
уловени с помощта на командата '\n':
let res = str.replace(/\n/g, '!');
В резултат във променливата ще бъде записано следното (интервалите между редовете са табулации):
`111! 222! 333! 444`;
Табулация
Символите за табулация могат да бъдат
уловени с помощта на командата '\t':
let res = str.replace(/\t/g, '!');
В резултат във променливата ще бъде записано следното:
`
111
!222
!333
!444
`;
Работа на точката
Командата '.' за многоредов
низ не улавя символите за нов ред:
let res = str.replace(/./g, '!');
В резултат във променливата ще бъде записано следното:
`
!!!
!!!!
!!!!
!!!!
`;
Всеки символ
За да се уловят всички символи в многоредов
низ, се използва хитри трик под формата на
комбинация [\s\S]. Такава конструкция ще намери
всички обикновени символи и всички нови редове:
let res = str.replace(/[\s\S]/g, '!');
В резултат във променливата ще бъде записано следното:
`!!!!!!!!!!!!!!!!!!`;
Карета
С помощта на модификатора 'm'
може да се включи многоредов режим.
В този случай каретата ще улавя
началото на всеки ред:
let res = str.replace(/^/gm, '!');
В резултат във променливата ще бъде записано следното:
`
!111
!222
!333
!444
`;
Долар
Командата '$' в многоредов режим
ще улавя края на всеки ред:
let res = str.replace(/$/gm, '!');
В резултат във променливата ще бъде записано следното:
`
111!
222!
333!
444!
`;
Практически задачи
Даден е низ:
`
abc
def
ghi
jkl
`;
Напишете регулярен израз, който ще направи от този низ следния:
`
abc!
def!
ghi!
jkl!
`;
Даден е низ:
`
abc
def
ghi
jkl
`;
Напишете регулярен израз, който ще направи от този низ следния:
`
! abc
! def
! ghi
! jkl
`;
Даден е низ:
`
abc
def
ghi
jkl
`;
Напишете регулярен израз, който ще направи от този низ следния:
`!
abc
def
ghi
jkl
!`;
Даден е низ:
`
abc
def
ghi
jkl
`;
Напишете регулярен израз, който ще направи от този низ следния:
`!
! abc
! def
! ghi
! jkl
!`;
Даден е низ:
`
abc
def
ghi
jkl
`;
Напишете регулярен израз, който ще направи от този низ следния:
`!
abc!
def!
ghi!
jkl!
!`;
Даден е низ:
`
abc
def
ghi
jkl
`;
Напишете регулярен израз, който ще направи от този низ следния:
`
!abc
!def
!ghi
!jkl
`;