gpt4 book ai didi

javascript - 将 string.replace 与正则表达式一起使用时遇到问题

转载 作者:行者123 更新时间:2023-11-28 20:01:51 24 4
gpt4 key购买 nike

给定像这样的正则表达式:

http://rubular.com/r/ai1LFT5jvK

我想使用 string.replace 将“subdir”替换为我选择的字符串。

执行myStr.replace(/^.*\/\/.*\.net\/.*\/(.*)\/.*\z/,otherStr)

仅返回相同的字符串,如下所示:http://jsfiddle.net/nLmbV/

如果您查看 Rublar,它似乎捕获了我希望它捕获的内容,但在 Fiddle 上,它并没有取代它。

我想知道为什么会发生这种情况,以及我做错了什么。正确的正则表达式或 replace 调用的正确实现会很好,但最重要的是,我想了解我做错了什么,以便将来可以避免它。

编辑

我已经更新了 fiddle 以更改我的正则表达式:

/^.*\/\/.*\.net\/.*\/(.*)\/.*\z/

 /^.*\/\/.*\.net\/.*\/(.*)\/.*$/

根据 fiddle ,它只返回 hello 而不是 https://xxxxxxxxxx.cloudfront.net/dir/hello/Slide1_v2.PNG

最佳答案

就是你的正则表达式中的那个小\z

您可能忘记将其替换为 $ 符号。 JavaScript 使用 ^$ 作为 anchor ,而 Ruby 使用 \A\z

<小时/>

回答您的编辑:

比赛总是整体替换。您需要将要替换的部件的左侧和右侧分组,然后将其重新插入替换部件中:

url.replace(/^(.*\/\/.*\.net\/.*\/).*(\/.*)$/,"$1hello$2")

关于javascript - 将 string.replace 与正则表达式一起使用时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21541128/

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