在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java  HTML/ javascript中如何通過(guò)正則表達(dá)式修改字符串中的部分內(nèi)容呢?

javascript中如何通過(guò)正則表達(dá)式修改字符串中的部分內(nèi)容呢?

需求背景:

公司一套后臺(tái)系統(tǒng),表格頁(yè)面用ajax做分頁(yè),點(diǎn)擊分頁(yè)以后希望當(dāng)前url記錄分頁(yè)信息,這樣刷新當(dāng)前頁(yè)面時(shí),分頁(yè)信息不丟失。比如我點(diǎn)擊第5頁(yè),當(dāng)前url里面記錄一個(gè)page_num=5,這樣刷新頁(yè)面時(shí),直接進(jìn)入第5頁(yè)。

現(xiàn)在的問(wèn)題是,點(diǎn)擊分頁(yè)后,我需要無(wú)刷新修改url的方式更新url中的分頁(yè)信息。以點(diǎn)擊進(jìn)入第5頁(yè)為例。

比如:

https://www.baidu.com/
點(diǎn)擊后,url需要修改為:
https://www.baidu.com/?page_num=5

https://www.baidu.com/?page_num=2
點(diǎn)擊后,url需要修改為:
https://www.baidu.com/?page_num=5

https://www.baidu.com/?page_num=2&type=test
點(diǎn)擊后,url需要修改為:
https://www.baidu.com/?page_num=5&type=test

我現(xiàn)在希望通過(guò)正則表達(dá)式的方式,針對(duì)性的修改page_num的值,url的其他部分不受影響,但是這段代碼不會(huì)寫(xiě)(尤其是正則)?麻煩大神幫忙說(shuō)下思路,最好貼點(diǎn)代碼。

延伸一下:上面需求不只是針對(duì)性修改page_num值的問(wèn)題,如果url里面本身沒(méi)有page_num信息,那么就不是修改page_num的值,而是追加一個(gè)page_num=5,這種特殊情況怎么處理呢?大神,如果有時(shí)間,就把這個(gè)問(wèn)題也幫忙看下吧,幫忙寫(xiě)點(diǎn)代碼,多謝啦。

回答
編輯回答
茍活

也可以把參數(shù)放在hash里

var hash = (location.hash || '').substring(1);
var matchPageNum = hash.match(/page_num=(\d+)/);
if (matchPageNum) {
    var matchedNum = parseInt(matchPageNum[1]);
    location.hash = hash.replace(/page_num=(\d+)/, 'page_num=' + 5);
} else {
    location.hash = hash + (hash ? '&' : '?') + 'page_num=' + 5
}

點(diǎn)擊分頁(yè)的時(shí)候再 location.hash = location.hash.replace(/page_num=(\d+)/, 'page_num=' + 5);

2018年1月1日 02:05
編輯回答
陌如玉

你要做的無(wú)非就是頁(yè)面不刷新的情況下分頁(yè),那不是重新渲染下表格不就可以了,至于頁(yè)碼保存的問(wèn)題 cookie,localstorage之類的本地存儲(chǔ)都可以,沒(méi)有必要url保存信息


補(bǔ)充

可以參考下這個(gè)demo http://www.qttc.net/static/de...

2018年4月30日 04:55
編輯回答
吢涼
function setValue(url,key,value){
    if(url.indexOf(key)>=0){
        var regex=new RegExp("("+key+"=)\\d+","ig");
        url=url.replace(regex,function(matchStr,g1){
            return g1+value;
        });
    }else{
        if(url.indexOf("&")<0){
            url=url+"?"+key+"="+value;
        }else{
            url=url+"&"+key+"="+value;
        }
    }
    return url;
}
2017年6月6日 07:52