Flerradighet i JavaScript reguljära uttryck

Reguljära uttryck har sina särdrag när de arbetar med flerradiga strängar. Låt oss undersöka dessa med hjälp av följande sträng, som innehåller vanliga tecken, radbrytningstecken och tabbsteg:

javascriptlet str = `111
  222
  333
  444`;

Radbrytning

Radbrytningstecken kan fångas med kommandot '\n':

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

Resultatet som skrivs till variabeln blir följande (mellanrummen mellan raderna är tabbsteg):

javascript`111!  222!  333!  444`;

Tabb

Tabbtecken kan fångas med kommandot '\t':

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

Resultatet som skrivs till variabeln blir följande:

javascript`
                111
                !222
                !333
                !444
            `;

Punkten fungerar

Kommandot '.' för en flerradig sträng fångar inte radbrytningstecken:

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

Resultatet som skrivs till variabeln blir följande:

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

Vilket tecken som helst

För att fånga alla tecken i en flerradig sträng används ett knepigt trick i form av kombinationen [\s\S]. Denna konstruktion hittar alla vanliga tecken och alla radbrytningar:

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

Resultatet som skrivs till variabeln blir följande:

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

Cirkumflex

Med modifieraren 'm' kan man aktivera flerradsläge. I detta fall kommer cirkumflex att fånga början av varje rad:

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

Resultatet som skrivs till variabeln blir följande:

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

Dollar

Kommandot ' i flerradsläge kommer att fånga slutet av varje rad:

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

Resultatet som skrivs till variabeln blir följande:

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

Praktiska uppgifter

Задание 1

Given en sträng:

javascript`
  abc
  def
  ghi
  jkl
`;

Skriv ett reguljärt uttryck som gör följande av denna sträng:

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

Given en sträng:

javascript`
  abc
  def
  ghi
  jkl
`;

Skriv ett reguljärt uttryck som gör följande av denna sträng:

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

Given en sträng:

javascript`
  abc
  def
  ghi
  jkl
`;

Skriv ett reguljärt uttryck som gör följande av denna sträng:

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

Given en sträng:

javascript`
  abc
  def
  ghi
  jkl
`;

Skriv ett reguljärt uttryck som gör följande av denna sträng:

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

Given en sträng:

javascript`
  abc
  def
  ghi
  jkl
`;

Skriv ett reguljärt uttryck som gör följande av denna sträng:

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

Given en sträng:

javascript`
  abc
  def
  ghi
  jkl
`;

Skriv ett reguljärt uttryck som gör följande av denna sträng:

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