javascript - 如何使用正则表达式将 Slack URL 转换为 BB 代码?

标签 javascript regex slack bbcode

我正在尝试使用正则表达式将 Slack 版本的 Markdown 格式转换为 BB 代码。我现在卡在链接上了。像这样的松弛格式:

<www.url.com|This is the actual text>
<www.url.com>

BB 代码格式如下:

[url=www.url.com]This is the actual text[/url]
[url]www.url.com[/url]

我正在使用它处理第一种类型(在 javascript 中)

string.replace(/\<([\s\S]+)(?=\|)\|([\s\S]*?)\>/gm, "[url=$1]$2[/url]"

我正在努力制定第二条规则,该规则将只匹配 <...> 之间的文本如果没有 |在字符串中。谁能帮帮我?

此外,如果有一种巧妙的方法可以同时处理这两个选项,请告诉我!

最佳答案

你可以使用

const text = `<www.url.com|This is the actual text>
<www.url.com>`;
console.log( text.replace(/<([^<>|]*)(?:\|([^<>]*))?>/g, (x, url, text) => text !== undefined ?
 `[url=${url}]${text}[/url]` : `[url]${url}[/url]`) )

参见 regex demo . 详细信息:

  • < - 一个 <字符(如果您打算匹配 < 字符,请永远不要以任何正则表达式形式转义此字符)
  • ([^<>|]*) - 第 1 组:< 以外的任何零个或多个字符, >|
  • (?:\|([^<>]*))? - 可选的非捕获组匹配一次或零次出现的 |然后是 < 以外的任何零个或多个字符和 >捕获到第 2 组
  • > - 一个 > char(同样,请不要在任何正则表达式风格中转义 > 文字字符)。

关于javascript - 如何使用正则表达式将 Slack URL 转换为 BB 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71659755/

相关文章:

Python:返回一个值并同时调用一个单独的函数?

javascript - 继续 JS 的 2 个层次

regex - 如何从 linux 中的文件的每一行中删除与模式匹配的重复单词

slack-api - 我可以使用Slack API设置个人资料图片吗?

Slack conversations.list 方法没有列出所有 channel

Python 正则表达式前瞻

javascript - 使用正则表达式识别以引号开头但返回子字符串的字符串

javascript - JavaScript 中的 UNRAR

javascript - 删除生产代码中的 console.assert

Java 正则表达式 <省略号>