我有以下正则表达式来获取网址后的第一部分:
^http[s]?:\/\/.*?\/([a-zA-Z-_.%]+).*$
它匹配以下网址中的测试:
foo.com
http://foo.com
http://foo.com/的测试
http://foo.com/的测试 /
http://foo.com/ 测试?栏
我现在要做的是重新创建相同的网址,但将测试替换为其他值。通过在比赛之前和之后获取部分或者反转结果。
我确定这是一种做法的方法,但我无法知道如何做到这一点。
答案 0 :(得分:2)
您可以在/test
之前使用捕获组作为部分,并将其用作替代的反向引用:
var re = /^(https?:\/\/[^\/]+\/)[^?\/]+/gmi;
var subst = '$1foobar';
var result = str.replace(re, subst);
[^?\/]+
将匹配网址中的下一个/
或?
之前的文字。作为原始正则表达式,它还假定网址以http://
或https://
开头。