【问题标题】:Regex, match everything, except double asterisks正则表达式,匹配所有内容,除了双星号
【发布时间】:2019-06-20 16:19:13
【问题描述】:

我正在创建一个文本编辑器界面,用户可以在其中格式化文本,并且他可以在旁边的 div 中看到修改。

为了突出显示一堆文本,我将双星号保留为以下 ** text **,就像在 stackoverflow 中一样。

我的代码如下所示:

replace(/\*{2}([^\*]*)\*{2}/g, "<strong>$1</strong>")

但我的问题是,如果文本包含星号,则可以看到以下输出:

** 文字* **,

而不是文本*

如何取消匹配的双字符而不破坏输出中的 HTML 标记?

【问题讨论】:

  • 像往常一样,这是一个半生不熟的请求,缺少信息。什么可以去**abc** 不要只说一个空格,因为那样它就会成为分隔符的一部分。只有 1 种答案风格适合,它是 \*\*.*?\*\*

标签: javascript regex regex-negation


【解决方案1】:

您可以处理单个星号后跟至少一个其他字符,只需添加(?:\*[^*]+)*

yourstr = yourstr.replace(/\*\*([^*]*(?:\*[^*]+)*)\*\*/g, "<strong>$1</strong>");

注意在字符类中转义*是没有用的,写\*{2}\*\*长。

【讨论】:

  • 非常感谢您的回答!这个解决方案非常适合我的需要!解释清楚!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多