/ / Як реалізувати <blockquote> та <code> на текстовій області? - javascript, jquery, html, regex

Як впровадити <blockquote> та <code> на текстовій області? - javascript, jquery, html, regex

Я намагаюся створити textarea точно так, як SO textarea, коли ви хочете написати питання / відповідь. Зараз майже я це зробив:

function generate(text) {
text = text.replace(/**(.*?)**/g, "<b>$1</b>");
text = text.replace(/__(.*?)__/g, "<u>$1</u>");
text = text.replace(/*(.*?)*/g, "<i>$1</i>");
text = text.replace(/--(.*?)--/g, "<del>$1</del>");
text = text.replace(/`(.*?)`/g, "<code>$1</code>");
document.getElementById("out").innerHTML = text
}
<textarea id="Q&A" oninput="generate(this.value)" name="txtarea" rows="4" cols="50"></textarea>
<div id="out"></div>

Але я не можу створити хороший регулярний вираз для заміни > з <blockquote> і або "` ", або 4[space] замінити <code> теги. Однак я написав регулярний вираз для блокчету:

text = text.replace(/>(.*?)(n|$)+/g, "<blockquote>$1</blockquote>");

Але це також не працює. Отже, чи може хтось це виправити?

Відповіді:

0 для відповіді № 1

Однак я написав регулярний вираз для блокчету:

text = text.replace(/>(.*?)(n|$)+/g, "<blockquote>$1</blockquote>");

Але це також не працює. Отже, чи може хтось це виправити?

Ви точно не хочете замінити > посередині рядка, тому використовуйте граничний символ ^ разом із багаторядковим прапором m (відповідність початку введення даних, а також відразу після розриву рядка):

  text = text.replace(/^>(.*?)(n|$)+/gm, "<blockquote>$1</blockquote>");