Javascript 在JS中标记,不包含<;p>;?

Javascript 在JS中标记,不包含<;p>;?,javascript,markdown,Javascript,Markdown,如何使用任何JS库(如markdown JS或marked)将一段标记文本转换为HTML,而不将其包含在段落标记中 例如,我喜欢将此*斜体*文本转换为此斜体文本,而不将其包含在中 编辑: -我的问题不是如何在转换后从输出中删除p标记,我的问题是如何要求库不要将输出包含在p标记中。 -默认情况下,标记js并在内标记封闭输出。有一种方法可以实现这一点。该库允许您定义自己的渲染器,该方法允许您定义段落的输出 您可以使用以下方法传入自己的渲染器: marked.setOptions({ render

如何使用任何JS库(如markdown JS或marked)将一段标记文本转换为HTML,而不将其包含在段落标记中

例如,我喜欢将
此*斜体*文本
转换为
此斜体文本
,而不将其包含在

编辑:
-我的问题不是如何在转换后从输出中删除p标记,我的问题是如何要求库不要将输出包含在p标记中。
-默认情况下,标记js并在
内标记封闭输出。

有一种方法可以实现这一点。

该库允许您定义自己的渲染器,该方法允许您定义段落的输出

您可以使用以下方法传入自己的渲染器:

marked.setOptions({
  renderer: new MyRenderer(),
});

var output = marked('This **text** will be rendered with MyRenderer');
这将要求您为
块引号
html
段落
以及默认的
标记的所有其他方法定义方法

以下是一个例子:

function MyRenderer(options) {
  this.options = options || {};
}

MyRenderer.prototype.paragraph = function(text) {
  return 'This comes from my own renderer: ' + text + '\n';
};
但是,这需要一些努力,因此清除段落(
标记)的最快方法是更改
标记的.js文件中现有呈现程序的代码:

替换:

Renderer.prototype.paragraph = function(text) {
  return '<p>' + text + '</p>\n';
};

我通过对结果使用正则表达式解决了这个问题:

rawMarkup.replace(/^(?:<p>)?(.*?)(?:<\/p>)?$/, "$1")
rawMarkup.replace(/^(?:)?(.*?(:)?$/,“$1”)
然而,这只在简单的情况下有效,并且在有两个相邻段落的情况下会失败,可能还有其他段落


经过一些测试后,我意识到文本周围有段落标记是有充分理由的,我的实现将不得不进行调整。

关于这个问题,我已经晚了很久,但昨晚我遇到了完全相同的问题,我打开了标记的,以构建解决这个问题的方法

我需要能够(对于我的i18n翻译CMS)将标记嵌入任何类型的标记(如标题)中,并让它们从Markdown开始呈现,而不使用封闭的
标记。因此,这个修正使得如果我的源代码中只有一行文本(对我来说是JSON),那么它将不会包装在
标记中。但如果有更多,它会像往常一样将它们全部包装在标签中

这是我对零钱的请求

我非常怀疑它是否会被包括在内,但我正在我的项目中使用它,它工作得非常好。

以下是对我有用的东西(多年后)。它假定您知道哪些元素不希望包装在段落标记中

const marked=require(“marked”);
//降价中的每一行都被视为一个新段落,这防止了
//img标签被包装在标签中,这有助于调整img的大小,
//对中字幕等。
marked.Renderer.prototype.paragration=(文本)=>{

如果(text.startsWith("这有什么问题吗?你不能在转换后对其进行分析以获得你想要的输出。这似乎是一个奇怪的请求,我怀疑你会发现它是现成的。@LouBichard你的评论实际上是一个转换为HTML的标记文本,没有包含在
/code>中,因此这不是一个奇怪的请求!谢谢,如果efault“Renderer”已公开,可以轻松地对其进行扩展或更改。您可以使用
new marked.Renderer()创建默认呈现程序的实例
然后重写它的
段落
函数,然后将此实例传递到
标记的.setOptions
。该解决方案有一个问题:所有段落都没有p标签。这对我们使用
角度标记的
1.0.1
有效,但不使用
角度标记的
1.2.2
。我没有调查过再进一步,但这可能会帮助其他人。
rawMarkup.replace(/^(?:<p>)?(.*?)(?:<\/p>)?$/, "$1")