gpt4 book ai didi

javascript - 仅从不同的基本 url 获取子字符串

转载 作者:行者123 更新时间:2023-12-01 01:22:35 25 4
gpt4 key购买 nike

我有一个返回如下网址的变量:https://abc.example.com/bla/bla/123/bla,其中abc1.example不是每种情况都相同(也可以是 http 而不是 https)。

我希望它只返回 /bla/bla/123/bla ,为此我尝试过:

renamedObj.context_page_path = renamedObj.context_page_url.replace(new RegExp(renamedObj.context_page_url, 'g'), '').replace('https://', '').replace('http://', '');

但只给我一个空字符串:context_page_path = ''

最佳答案

您需要替换从开头到第一个斜杠的所有不属于协议(protocol)的内容。

renamedObj.context_page_url.replace(/^https?:\/\/[^\/]+/, '');

您当前的尝试是返回一个空字符串,因为您基本上是在告诉它用任何内容替换整个字符串。它相当于:

'foo'.replace('foo', ''); //""

[编辑 - REGEX 模式解释]

好的,让我们看看 /^https?:\/\/[^\/]+/

首先,开始和结束的/是分隔符。它们告诉 JavaScript,中间包含的内容应该被解释为 REGEX 模式,而不是字符串。

有两种定义 REGEX 模式的方法 - REGEX 文字(如本例所示)和通过 new RegExp(string) 的动态模式。请参阅my other answer关于两者的区别。

模式本身也是如此:

  • ^ 告诉 JS 匹配必须从字符串的开头开始;匹配仅出现在字符串中的某处是 Not Acceptable ;必须从头开始
  • https?:\/\/ 与协议(protocol)匹配。 s 之后的 ? 表示 s 是可选的,因为您说它可以是 httphttps 。正斜杠需要“转义”(使用黑斜杠),这样它们就不会与我们的分隔符冲突,正如所讨论的,分隔符也是正斜杠。
  • [^\/]+ 表示“从这一点开始,匹配不是正斜杠的所有内容”(再次必须转义。)因此它将一直持续到第一个“bla”之前的斜杠。

总而言之,我们将删除 pathname 之前的所有内容URL 的一部分。

关于javascript - 仅从不同的基本 url 获取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54109538/

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