首页 > 解决方案 > 将 Whatsapp 降价转换为 HTML 标签

问题描述

我需要将 Whatsapp markdown 转换为 HTML 标签。

例如。

*Bold* to <b>Bold</b>
_Italic_ to <i>Italic</i>

我想使用正则表达式来捕获字符串中的单词。

这是包含测试用例的链接,以及我最好的尝试。 https://regexr.com/4gnqr

正则表达式应该同时捕获*bold**some more bold text*

标签: javascriptregex

解决方案


你可以使用一个简单的正则表达式:

const regex = /\*(.*?)\*/g;
const test = "*bold*, not bold, *bold again*";
//            ^1   ^2           ^3         ^4
const result = test.replace(regex , '<strong>$1</strong>')
console.log(result)

  • 你想要从*到下一个*并保存两者之间*(.*?)*
    的所有内容:(没有?它会从头到尾(例如 1->4 而不是 1->2、3->4),它被称为(非)贪婪)。
  • 这不起作用,因为*它是一个正则表达式字符,所以你必须转义 -> \*
  • 表示“/g全局”,例如替换所有出现(而不是仅第一次出现)。
  • $1保存我们的第一个(并且仅在这种情况下)值。

下划线版本的工作方式相同,并且不需要像*这样转义。


推荐阅读