Замена строк с помощью регулярных выражений в JavaScript - PullRequest
4 голосов
/ 10 мая 2010

Конкретное регулярное выражение беспокоит меня прямо сейчас. Я просто хочу заменить range = 100 в строке типа

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

с

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

Я успешно сопоставил часть "range = 100" с

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

Но когда я пытаюсь заменить его,

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

ничего не происходит. Строка по-прежнему имеет диапазон = 100. Как я могу заставить это работать?

Ответы [ 5 ]

5 голосов
/ 10 мая 2010

string.replace не является разрушительным, то есть не меняет экземпляр, к которому он обращен.

Для этого используйте

string = string.replace("range=100","range=400");
5 голосов
/ 10 мая 2010

Поскольку replace не изменяет строку, к которой она применяется, но возвращает новую строку.

string = string.replace(/range=100/, 'range=400');
2 голосов
/ 10 мая 2010

Я бы сделал это:

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

Это заменит range=100 только в том случае, если это аргумент URI (поэтому он ограничен слева либо ? или &, а справа & или концом строки).

1 голос
/ 10 мая 2010

Я бы сделал так

string = string.replace(/\brange=100(?!\d)/, 'range=400');
1 голос
/ 10 мая 2010

Запись только string.replace("range=100","range=400");.

...