删除网址中第一个正斜杠之前的所有内容[重复]
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)
【讨论】:
以上是关于删除网址中第一个正斜杠之前的所有内容[重复]的主要内容,如果未能解决你的问题,请参考以下文章