gpt4 book ai didi

Javascript 正则表达式搜索/替换正在跳过匹配项

转载 作者:行者123 更新时间:2023-11-30 18:06:48 27 4
gpt4 key购买 nike

我正在 FF 和 Chrome 中尝试以下操作

' 1 2 3 4 5 6 '.replace(/([\s()])(\d+)([\s()])/g, '$1[num $2]$3');

我期待的结果:

" [num 1] [num 2] [num 3] [num 4] [num 5] [num 6] "

我得到的结果(两种浏览器):

" [num 1] 2 [num 3] 4 [num 5] 6 "

即使简化也会得到相同的结果:

' 1 2 3 4 5 6 '.replace(/\s(\d+)\s/g, ' [num $1] ');

有什么想法吗?

最佳答案

是的,您的 \s 正在消耗字符。正则表达式多重匹配向前运行,防止死循环。所以在第一个匹配之后你已经在第二个之前了,但是没有匹配的空格,所以它忽略了它。

您要做的是使用前瞻使您的匹配不消耗,或者使用 \b,它是单词边界的零宽度匹配。

' 1 2 3 4 5 6 '.replace(/([\s()])(\d+)(?=[\s()])/g, '$1[num $2]')

这应该适合你。

关于Javascript 正则表达式搜索/替换正在跳过匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15625911/

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