Как мне правильно поместить этот необработанный код в тег <pre>? - PullRequest
1 голос
/ 05 мая 2020

Я пытаюсь позволить пользователю ввести какой-то текст, затем я запускаю его в более красивом виде и затем показываю пользователю отформатированный код. Моя скрипка :

<code><pre id="mypre" style="background-color:grey">
var val = `" \ n \ n \ n

Мой первый заголовок

\ n

Мой первый абзац.

\ n \ n \ n"`; $ ( документ) .ready (function () {val = val.replace (/^"(.*)"$/, '$ 1'); val = val.replace (/ (?: \ r \ n | \ r | \ n) / g, ''); $ ("# mypre"). text (val);});

Обратите внимание, что возвращаемый текст возвращается с литералом ", и я попытался заменить их и символ \n безрезультатно. Я бы хотел, чтобы предварительный тег выглядел так:

<!DOCTYPE html>
<html>
  <body>
    <h1>My First Heading</h1>
    <p>My first paragraph.</p>
  </body>
</html>

1 Ответ

2 голосов
/ 05 мая 2020

Да, регулярное выражение - это весело. Это должно работать:

var val = `"<!DOCTYPE html>\n
<html>
  \n
  <body>
    \n
    <h1>My First Heading</h1>
    \n
    <p>My first paragraph.</p>
    \n\n
  </body>
  \n
</html>
"`;


$(document).ready(function(){
  val = val.replace(/^"([\s\S]*?)"$/, '$1');
  val = val.replace(/\n{2,}/g, '');
  $("#mypre").text(val);
});

Первое регулярное выражение ([\s\S]*?) соответствует всему на нескольких строках, а \n{2,} соответствует двум или более \n разрывам строк.

...