【问题标题】:Is there a good alternative approach for my case with positive lookbehind on js?对于我的案例,是否有一个很好的替代方法,可以对 js 进行积极的后视?
【发布时间】:2021-02-21 12:56:52
【问题描述】:

正向后视的主要问题并非在所有浏览器中都支持。 是否存在一个很好的替代方案来替代没有积极的回顾?

我有:

  1. str = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua 5 some parts 735, 2634, 2635, 2640, or 4701 lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'
  2. regexp = /(?<=(\d+) some (?:part)(?:s)? (?:\d+, (?:or |and )?)*)(\d+)/g,

我需要一些部分之后的每个数字都包含在标签中,以便进行下一次查看:

 <a href="${groupOne}/${groupTwo}">${match}</a>

结果是

<a href="5/735">735</a>,
<a href="5/2634">2634</a>...

等等

请查看示例 - https://regex101.com/r/99WCEo/1

【问题讨论】:

  • 而不是图像,添加到 regex101 的链接。
  • lookbehind is now supported 被许多浏览器(除了 safari 和旧 IE)
  • @Toto 确定,说明已更新。
  • @Toto 关于浏览器,是的,你是对的。不幸的是,我需要覆盖 safari 和 ie 11
  • 这不是一个好消息 ;(。你有没有试过自己写解析器?

标签: javascript regex lookbehind


【解决方案1】:

您可以分两步完成。首次使用:

/(\d+) some parts? (?:\d+, (?:or |and )?)*\d+/g

这匹配整个相关子字符串5 some parts 735, 2634, 2635, 2640, or 4701,并捕获这些组:

  1. 5
  2. 735, 2634, 2635, 2640, or 4701

然后在第二组中搜索/\d+/g,提取所有数字并进行替换。

【讨论】:

  • 谢谢,伙计。它会起作用,但需要进行一些小的调整。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 2013-07-12
  • 1970-01-01
  • 2017-11-11
  • 2017-05-12
  • 2023-04-07
相关资源
最近更新 更多