js 修改链接参数
比如,需要修改callback中的参数
callback 的值为:"http://blog.whuang.com/search?username=90003819861"
需要修改其中的参数 username的值为abc
预期结果是:'http://blog.whuang.com/search?username=abc'
核心方法:
/** * callback 链接增加参数或修改参数 * @param callback * @param key * @param val2 * @returns {*} */ parseCallbackUrl: function (callback, key, val2) { if (!callback) { return ''; } callback = callback.replace(/#$/, ''); if (callback.indexOf('?') == -1) { callback = callback + '?' + key + '=' + val2; } else if (callback.indexOf('&' + key + '=') == -1 && callback.indexOf('?' + key + '=') == -1) { callback = callback + '&' + key + '=' + val2; } else { var regExp = new RegExp('([&?]' + key + '=)[^&]*', ''); callback = callback.replace(regExp, ('$1' + val2)); } return callback; }
测试代码:
var url='http://blog.whuang.com/search?username=90003819861'; console.log(urlUtil.parseCallbackUrl(url,'username','abc')); url='http://blog.whuang.com/search?a=b&username=90003819861'; console.log(urlUtil.parseCallbackUrl(url,'username','abc')); url='http://blog.whuang.com/search?a=b&username='; console.log(urlUtil.parseCallbackUrl(url,'username','abc')); url='http://blog.whuang.com/search?rusername=90003819861'; console.log(urlUtil.parseCallbackUrl(url,'username','abc')); url='http://blog.whuang.com/search'; console.log(urlUtil.parseCallbackUrl(url,'username','abc')); url='http://blog.whuang.com/search?userName='; console.log(urlUtil.parseCallbackUrl(url,'username','黄威'));