删除字符不匹配的字符串开头

时间:2018-08-06 00:15:27

标签: javascript node.js regex

说我有这个网址:

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

我要删除与“ http”不匹配的前几个字符。我也想删除.git,但不确定如何可靠地做到这一点。

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

https://github.com/ORESoftware/npp

作为一次总体对话,不确定该网址与以下内容有何不同:

www.github.com/ORESoftware/npp

1 个答案:

答案 0 :(得分:2)

您可以尝试以下方法:

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之前的最后一个字符都是如此。