简体   繁体   中英

Get everything except match in javascript regular expression

I have the following regex to get the first part after a url:

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

It matches test in the below urls:

foo.com
http://foo.com
http://foo.com/ test
http://foo.com/ test /
http://foo.com/ test ?bar

What I'm now trying to do is recreate the same url, but replace test with a different value. Either by taking the parts before and after the match or reversing the result.

I'm sure there's a regexy way of doing this, but I'm unable to find out how to do so.

You can use a capturing group for part before /test and use it as back-reference in replacement:

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

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

[^?\\/]+ will match text before next / or ? after domain name in URL. As your original regex it also assumes that URLs start with http:// or https:// .

RegEx Demo

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM