yourniceshot
@yourniceshot
уточка-фронтендер

Как записать в регулярном выражении любое количество любых символов?

Нужно заменять значения переменных в определенном урле, пишу регулярку под это, не могу придумать, чтобы любое количество любых символов заменялось на нужное и не терялся конец строки при этом. очень не хочу делать через сплит/джойн, верю что можно написать под такой кейс идеальную регулярку, но чет застряла :с

let url = 'http://localhost/?a=1&b=2&test=Y&clear=allcache';

function changeURL(variable, newData) {
  let re = new RegExp(variable + "=" + "\.");
  const result = url.replace(re, variable + "=" + newData);
  console.log(result)
}

changeURL('test', 'lalala');
  • Вопрос задан
  • 126 просмотров
Решения вопроса 2
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
let re = new RegExp(variable + "=" + ".*?(?=&|$)");
const result = url.replace(re, variable + "=" + newData);

Но данный вариант далеко не идеален/
я бы предпочел как то так:

let url = 'http://localhost/?a=1&b=2&test=Y&clear=allcache';

let re = /(\?|&)(.*?)\=(.*?)(?=&|$)/g;

const newdata = {
   test: 333,
   clear: 4444
};

function changeURL(url, keys) {
   return url.replace(re, (a,prefix,key,val)=>{
     if( keys[key] )
       return prefix+key+"="+keys[key];
     return prefix+key+"="+val;
   });
}

url = changeURL(url, newdata);
console.log(url);
Ответ написан
Комментировать
@dodo512
let re = new RegExp("([?&]" + variable + "=)[^&]*");
const result = url.replace(re, "$1" + newData);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы