gpt4 book ai didi

javascript - 正则表达式:准确匹配输入中的粗体 (**) 和斜体 (*) 项

转载 作者:行者123 更新时间:2023-12-03 08:04:05 24 4
gpt4 key购买 nike

我正在尝试使用正则表达式解析 Markdown 内容。为了从输入中获取粗体斜体项目,我目前正在使用正则表达式:

/(\*\*)(?<bold>[^**]+)(\*\*)|(?<normal>[^`*[~]+)|\*(?<italic>[^*]+)\*/g

Regex101 链接:https://regex101.com/r/2zOMid/1

这个正则表达式的问题是:
  • 如果粗体文本内容之间有一个 *,则匹配失败
  • 如果中间有类似 ***** 的长文本,则匹配失败

#####:尝试过:我尝试删除 bold 组中的 [^**] 部分,但这搞乱了粗体匹配,查找最后一个 ** 出现的位置,并且包括所有“**”字符

我想要什么:
  • 准确的粗体
  • * 允许在粗体内
  • 准确的斜体

语言:Javascript

假设:

粗体文本包裹在**内斜体文本包含在 *

最佳答案

有一些discussion in the chat正在进行中。顺便提一下,目前还没有关于如何处理像 \* 这样的转义字符的要求。所以我没在意。

根据所需的结果,我会选择一个两步解决方案并保持模式简单:

str = str.replace(/\*\*(.+?)\*\*(?!\*)/g,'<b>$1</b>').replace(/\*([^*><]+)\*/g,'<i>$1</i>');

Here is the JS-demo at tio.run

我自己认为依靠相同字符的数量来区分替换类型不是一个好主意。它的工作方式最终取决于品味。

关于javascript - 正则表达式:准确匹配输入中的粗体 (**) 和斜体 (*) 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73002812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com