4

A particular regular expression is bugging me right now. I simply want to replace the range=100 in a string like

var string = '...commonstringblabla<b>&range=100&</b>stringandsoon...';

with

...commonstringblabla<b>&range=400&</b>stringandsoon...

I successfully matched the "range=100"-part with

alert( string.match(/range=100/) );

But when I try to replace it,

string.replace(/range=100/, 'range=400');

nothing happens. The string still has the range=100 in it. How can I make it work?

5 Answers 5

6

string.replace isn't destructive, meaning, it doesn't change the instance it is called on.

To do this use

string = string.replace("range=100","range=400");
Sign up to request clarification or add additional context in comments.

Comments

5

Because replace does not modify the string it is applied on, but returns a new string.

string = string.replace(/range=100/, 'range=400');

Comments

2

I would do this:

string.replace(/([?&])range=100(?=&|$)/, '$1range=400')

This will only replace range=100 if it’s a URI argument (so it’s delimited on the left by either ? or & and on the right by & or the end of the string).

1 Comment

This is the most useful answer imho
1

I would do this way

string = string.replace(/\brange=100(?!\d)/, 'range=400');

Comments

1

Write only string.replace("range=100","range=400");.

Comments

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.