删除网址中第一个正斜杠之前的所有内容[重复]

Posted

技术标签:

【中文标题】删除网址中第一个正斜杠之前的所有内容[重复]【英文标题】:Remove everything before the first forward slash in the url [duplicate] 【发布时间】:2021-02-17 15:23:31 【问题描述】:

我需要使用正则表达式删除第三个前锋之前的所有内容,例如 https://***.com/questions/ask 变为 /questions/ask 在正则表达式方面我不是最棒的,因此非常感谢您的帮助。

这是我目前所拥有的https://regex101.com/r/qQ2dE4/498

我目前拥有的代码是但想使用正则表达式:

url.substring(url.indexOf('\/') + 3)

【问题讨论】:

url.indexOf('\/') + 3 无论如何都不会删除第三个 / 之前的所有内容 - 而且您的 regex101 也不处于 javascript 模式 试试s = s.replace(/^(?:[^\/]*\/)3/, '/') 或检查:regex101.com/r/qQ2dE4/499 【参考方案1】:

使用这个:

(?<=.*\/.*\/.*\/).+

Demo

说明:

(?<= - 它的正面看后面,在它里面的任何位置的模式都是从这个位置开始找到匹配的。

.*\/.*\/.*\/ - 用在正向后面,它在该位置后面是3个正斜杠的位置之后导致匹配开始

.+ - 匹配任何一个或多个

编辑: 从@JaromandaX 的评论来看,这也可以使用(老实说,我认为它更具可读性和更简单):

(?<=(?:.*?\/)3).+

【讨论】:

请您解释一下正则表达式在做什么? 为什么不(?<=(?:.*?\/)3).+ @nless 我编辑了我的答案并添加了解释,希望这可以帮助你 @JaromandaX 是的,也可以用【参考方案2】:

我了解有关正则表达式的问题,但需求尚不清楚 - 如果您需要只是路径名,那么工具箱中有更好的工具(适用于不从事家庭作业的任何人)。

const url = 'https://***.com/questions/ask'
console.log(new URL(url).pathname)

【讨论】:

以上是关于删除网址中第一个正斜杠之前的所有内容[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在最后一个正斜杠之前删除部分字符串

postgres regex_replace 第三个和最后一个正斜杠之间的所有内容

使用 gsub 删除 R 中第一个空格之前的所有字符串

如何删除列中最后一个正斜杠之前的文本?

删除R中字符串中第一个大写字母实例之前的字符

如何在 Rails 应用程序中删除 URL 的尾部斜杠? (在 SEO 视图中)