【问题标题】:JavaScript parse bbcode urlJavaScript 解析 bbcode url
【发布时间】:2022-01-03 12:29:09
【问题描述】:

我一直在尝试在 JavaScript 中解析 bbcode URL 标签。

例如,

[url=http://examp.le]linktext[/url]

应该变成

<a href="http://examp.le">linktext</a>. 

我对此进行了大量研究,并且对正则表达式有非常深刻的理解。 那么问题来了,我该怎么做呢?

【问题讨论】:

  • 如果你对此做了很多研究,你应该至少有一些部分有效的东西,对吧?你能把它放在你的问题中吗?
  • 我建议您不要使用正则表达式来解析 BBCode,因为当您有多种类型的标签可能会被错误地使用时,这非常困难:[b]bold [u]underlined and bold[/b] wut[/u]。这不应像 &lt;strong&gt;bold &lt;u&gt;underlined and bold&lt;/strong&gt; wut&lt;/u&gt; 那样解析,因为该 HTML 无效。
  • 我只需要解析URL标签,但谢谢你的建议。

标签: javascript regex bbcode


【解决方案1】:

你可以试试这个正则表达式:

\[url=([^\s\]]+)\s*\](.*(?=\[\/url\]))\[\/url\]

Debuggex Demo

所以,在 JavaScript 中你可以使用这样的东西:

text = text.replace(/\[url=([^\s\]]+)\s*\](.*(?=\[\/url\]))\[\/url\]/g, '<a href="$1">$2</a>')

jsFiddle demo

如果你想解析短格式

[url]http://ya.ru[/url]

必须转换为

<a href="http://ya.ru">http://ya.ru</a>

您需要以下正则表达式:

\[url\](.*(?=\[\/url\]))\[\/url\]

Debuggex Demo

以及对应的JavaScript:

 text = text.replace(/\[url\](.*(?=\[\/url\]))\[\/url\]/g, '<a href="$1">$1</a>')     

【讨论】:

  • @JochemKuijpers 好的,已修复。谢谢。
  • 我不会使用正则表达式。 BB 代码需要一个解析器,因为它是一个带有类似于 HTML 的打开/结束标签的标记。
猜你喜欢
  • 1970-01-01
  • 2016-04-12
  • 2011-01-26
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多