Мне нужно изменить значение параметров запроса данного URL независимо от типа значения.
У меня есть такая функция, как,
function urlGenerator (key, value) {
var url = "www.domain.com/?id=10&name=xxx&dob=2018-12-13";
// change the value for given key
return url;
}
Порядок параметров запроса не фиксирован. Может быть любого порядка. Думаю, решение можно найти с помощью Regex.
Мне нужно универсальное решение независимо от типа значения, указанного для указанного выше URL. Мне нужно вызвать вышеуказанный метод, как показано ниже, и получить результирующий URL-адрес.
result = urlGenerator('id', 15);
result = urlGenerator('name', 'yyy');
result = urlGenerator('dob', '2018-10-20');
Заранее спасибо!!
почему здесь метка php?
@mickmackusa При добавлении тега регулярного выражения SO предложил добавить язык.
javascript - это язык ... и тот, который вы используете.
URL-адрес в вашей функции статичен?
@MickaelLeger Да



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я использую replace для изменения значения с помощью регулярного выражения.
Попробуйте эту функцию urlGenerator:
function urlGenerator(url, field, value) {
var reg = new RegExp('('+field+'=[^&]*)', "");
return url.replace(reg, field+'='+value);
}
Обновлено:
Если в вашей функции нет статического URL-адреса:
function urlGenerator(field, value) {
var url = "www.domain.com/?id=10&name=xxx&dob=2018-12-13";
var reg = new RegExp('('+field+'=[^&]*)', "");
return url.replace(reg, field+'='+value);
}
Вы можете сделать это так
Итак, здесь, во временной переменной, мы создаем выражение для регулярного выражения, используя string template, а затем, используя RegExp, меняем его на объект регулярного выражения. А затем, используя метод replace, мы заменяем matched value на value supplied in function.
function urlGenerator (key, value) {
let temp = '(?<='+`${key}`+'=)[^&]+'
let reg = new RegExp(temp,'g');
console.info(reg);
var url = "www.domain.com/?id=10&name=xxx&dob=2018-12-13";
// change the value for given key
return url.replace(reg, value);
}
result = urlGenerator('id', 15);
console.info(result);
result = urlGenerator('name', 'yyy');
console.info(result);
result = urlGenerator('dob', '2018-10-20');
console.info(result);@VinothKumar всегда рад помочь :)
@Jouby Я пробовал ваше первое решение, но оно не работает должным образом. Перед отредактированным ответом этот ответ публикуется и работает нормально. Вот почему я не ответил на ваш ответ.
Вам нужно будет проанализировать URL-адрес, чтобы получить объект со всеми параметрами, добавить / изменить значение, которое вам нужно изменить, и перестроить URL-адрес. См., Например, stackoverflow.com/questions/8486099/… для первого шага.