首页 > 解决方案 > 删除字符不匹配的字符串开头

问题描述

说我有这个网址:

git+https://github.com/ORESoftware/npp.git

我想删除与“http”不匹配的第一个字符。我也想删除 .git,但不知道如何可靠地做到这一点。

所以我想得到这个字符串:

https://github.com/ORESoftware/npp

作为一个全面的侧面对话,不确定该网址与以下内容有何不同:

www.github.com/ORESoftware/npp

标签: javascriptnode.jsregex

解决方案


你可以试试这个:

let s = 'git+https://github.com/ORESoftware/npp.git';
console.log(s.replace(/^.*?(http.*?)\.git$/, '$1'))

输出:

https://github.com/ORESoftware/npp

此正则表达式的工作方式如下:

^.*?是从字符串开头到下一个匹配的元素的非贪婪匹配,在这种情况下是(http.*?)捕获组。

(http.*?)是一个捕获组,它捕获从http下一场比赛到下一场比赛的所有内容(因为.*?又是非贪婪的)

\.git$匹配.git字符串的尾随。

替换字符串$1仅用捕获组的内容替换原始字符串的内容。在这种情况下,这是从http直到最后一个字符的所有内容.git


推荐阅读