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

    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);
    Ответ написан
    Комментировать