在javascript正则表达式中获取匹配以外的所有内容

时间:2016-08-26 16:54:07

标签: javascript regex string url replace

我有以下正则表达式来获取网址后的第一部分:

^http[s]?:\/\/.*?\/([a-zA-Z-_.%]+).*$

它匹配以下网址中的测试

  

foo.com
  http://foo.com
  http://foo.com/测试
  http://foo.com/测试 /
  http://foo.com/ 测试?栏

我现在要做的是重新创建相同的网址,但将测试替换为其他值。通过在比赛之前和之后获取部分或者反转结果。

我确定这是一种做法的方法,但我无法知道如何做到这一点。

1 个答案:

答案 0 :(得分:2)

您可以在/test之前使用捕获组作为部分,并将其用作替代的反向引用:

var re = /^(https?:\/\/[^\/]+\/)[^?\/]+/gmi; 
var subst = '$1foobar'; 

var result = str.replace(re, subst);

[^?\/]+将匹配网址中的下一个/?之前的文字。作为原始正则表达式,它还假定网址以http://https://开头。

RegEx Demo