gpt4 book ai didi

javascript - 如何在 Safari 中运行这个积极的 lookbehind 正则表达式

转载 作者:行者123 更新时间:2023-12-01 16:10:08 29 4
gpt4 key购买 nike

(?<=a)(?=b)|(?<=b)(?=a)

我使用这个正则表达式插入一个“|”在每对 'ab' 或 'ba' 之间,例如:

ab -> a|b
aba -> a|b|a
ababa -> a|b|a|b|a
aaabbbaaabaaaaaab -> aaa|bbb|aaa|b|aaaaaa|b

但它在 Safari 中不起作用,因为它不支持正面回顾。

是否有其他方法可以更改此正则表达式,使其可以在 Safari 中工作?

最佳答案

你可以使用

.replace(/(a)(?=b)|(b)(?=a)/g, '$1$2|')

参见 regex demo online .

详情

  • (a)(?=b) - 如果右边有 b,则将 a 匹配并捕获到第 1 组<
  • | - 或者
  • (b)(?=a) - 如果 a 紧邻 b 的右侧,则匹配并捕获 b 到第 2 组当前位置。

替换为第 1 组 + 第 2 组值(只有其中一个会在匹配时填充文本)和一个 | 字符。

请参阅下面的 JS 演示:

var rx = /(a)(?=b)|(b)(?=a)/g;
var strs = ['aba', 'abab', 'aaabbbababab'];
for (var s of strs) {
console.log(s, '=>', s.replace(rx, '$1$2|'));
}

关于javascript - 如何在 Safari 中运行这个积极的 lookbehind 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62301549/

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