gpt4 book ai didi

javascript - 用javascript替换正则表达式中的部分文本

转载 作者:行者123 更新时间:2023-11-30 16:12:07 25 4
gpt4 key购买 nike

我需要使用正则表达式更改我的 URL。例如,我的网址看起来像这样:

http://domain.com/blog/?page=2&order=asc&by=date

我想使用 javascript 将 order=asc 动态更改为 order=desc。但是这个函数也适用于任何属性,例如 by,所以只改变 order 是不行的。

这是函数:

function replace(url, attribute, value) {
var pattern = new RegExp('([\?|\&])' + attribute + '=.\w+');
var replacement = '$1' + attribute + '=' + value;
return url.replace(pattern, '', url);
}

例如,使用这些变量调用函数:

url = 'http://domain.com/blog/?page=2&order=asc&by=date'
attribute = 'order'
value = 'desc'

将返回 http://domain.com/blog/?page=2&order=desc&by=date

最佳答案

您可以使用 jQuery $.param 函数的反函数来解析参数。

(function($) {
$.unparam = function(value) {
var params = {};
var pieces = value.split('&');
var pair, i, l;
for (i = 0, l = pieces.length; i < l; i++) {
pair = pieces[i].split('=', 2);
params[decodeURIComponent(pair[0])] = (pair.length == 2 ?
decodeURIComponent(pair[1].replace(/\+/g, ' ')) : true);
}
return params;
};
}(jQuery));

var url = 'http://domain.com/blog/?page=2&order=asc&by=date';

$('<p>').text('Before: ' + url).appendTo('body');

var parts = url.split('?');
var base = parts[0];
var params = parts[1];
var data = $.unparam(params);

data.order = 'desc';

var newUrl = base + '?' + $.param(data);

$('<p>').text('After: ' + newUrl).appendTo('body');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


动态示例

(function($) {
$.unparam = function(value) {
var params = {};
var pieces = value.split('&');
for (var i = 0, l = pieces.length; i < l; i++) {
var pair = pieces[i].split('=', 2);
params[decodeURIComponent(pair[0])] = (pair.length == 2 ?
decodeURIComponent(pair[1].replace(/\+/g, ' ')) : true);
}
return params;
};
}(jQuery));

function updateParams(url, data) {
var parts = url.split('?');
var base = parts[0];
var params = parts.length > 0 ? parts[1] : '';
return base + '?' + $.param($.extend($.unparam(params), data));
}

var oldUrl = 'http://domain.com/blog/?page=2&order=asc&by=date';
var newUrl = updateParams(oldUrl, {
order: 'desc'
});

$('<p>').text(newUrl).appendTo('body');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

关于javascript - 用javascript替换正则表达式中的部分文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36088062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com