регулярное выражение, совпадение, включая несколько строк - PullRequest
0 голосов
/ 25 апреля 2019

Я не использую регулярное выражение, если есть несколько строк. Я пытаюсь сопоставить все, что находится внутри / # ----- # / символов.В одной строке все работает нормально.Вы можете проверить это здесь: https://regex101.com/r/yZTXwh/3

код:

highlightMessage(message) {
    return message.replace(
      /\/#\s*(.*?)\s*#\//g,
      (_, g) => `<span class='highlited-message'>${g}</span>`,
    )
  }

текст:

Hello
 /# my name
is
Mike
nice to meet you

 #/ 

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Похоже, вы пытаетесь сопоставить значимые символы блока /#...#/:

/\/#\s*((?:.|\n)*?)\s*#\//gm

let s = `Hello
 /# my name
is
Mike
nice to meet you

 #/ 
 bar
 /# single-line #/
 foo
 /#
 
 multi-line
 
 #/
 baz
 `;
 
 let r = /\/#\s*((?:.|\n)*?)\s*#\//gm;
 let a;
 while ((a = r.exec(s)) !== null)
   console.log(a[1]);

Вот регулярное выражение101

0 голосов
/ 25 апреля 2019

Вы можете использовать [^] * для сопоставления любой вещи, включая новую строку

, пожалуйста, попробуйте это:

function highlightMessage(message) {
    return message.replace(
      /\/#\s*([^]*)\s*#\//g,
      (_, g) => `<span class='highlited-message'>${g}</span>`,
    )
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...