1

I have a url and I want to replace the query string. For example

www.test.com/is/images/383773?wid=200&hei=200

I want to match the wid= and hei= and the numbers don't have to be 200 to replace the whole thing so it should look like this.

Expected www.test.com/is/images/383773?@HT_dtImage

So I've tried doing but it only replaced the matching wei and hei.

const url = "www.test.com/is/images/383773?wid=200&hei=200"

url.replace(/(wid)(hei)_[^\&]+/, "@HT_dtImage")

1

4 Answers 4

2

You can match either wid= or hei= until the next optional ampersand and then remove those matches, and then append @HT_dtImage to the result.

\b(?:wid|hei)=[^&]*&?

The pattern matches:

  • \b A word boundary to prevent a partial word match
  • (?:wid|hei)= Non capture group, match either wid or hei followed by =
  • [^&]*&? Match 0+ times a char other than &, and then match an optional &

See a regex demo.

let url = "www.test.com/is/images/383773?wid=200&hei=200"
url = url.replace(/\b(?:wid|hei)=[^&]*&?/g, "") + "@HT_dtImage";
console.log(url)

Sign up to request clarification or add additional context in comments.

Comments

2

I would just use string split here:

var url = "www.test.com/is/images/383773?wid=200&hei=200";
var output = url.split("?")[0] + "?@HT_dtImage";
console.log(output);

If you only want to target query strings havings both keys wid and hei, then use a regex approach:

var url = "www.test.com/is/images/383773?wid=200&hei=200";
var output = url.replace(/(.*)\?(?=.*\bwid=\d+)(?=.*\bhei=\d+).*/, "$1?@HT_dtImage");
console.log(output);

Comments

0

You can make use of lookaround using regex /\?.*/

enter image description here

const url = 'www.test.com/is/images/383773?wid=200&hei=200';

const result = url.replace(/\?.*/, '?@HT_dtImage');
console.log(result);

Comments

0

Try url.replace(/\?.*/, "?@HT_dtImage")

2 Comments

It would help if you explained what this does and why
\?.* = select everything from questionmark and to the end of line then replace it with ?@HT_dtImage

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.