更新uri哈希javascript
Update uri hash javascript
我很难相信没有人问过这个问题,但我在任何地方都找不到参考资料。我需要添加一个URI散列片段,并更新值,如果它已经在散列中。我现在可以让它添加哈希,但我的正则表达式似乎没有捕捉到,如果它存在,所以它添加另一个而不是更新。
setQueryString : function() {
var value = currentPage;
var uri = window.location.hash;
var key = "page";
var re = new RegExp("([#&])" + key + "=.*#(&|$)", "i");
var separator = uri.indexOf('#') !== -1 ? "&" : "#";
if (uri.match(re)) {
return uri.replace(re, '$1' + key + "=" + value + '$2');
}
else {
return uri + separator + key + "=" + value;
}
},
如果这可以做得更干净,同时保留其他url值/哈希值,那就太好了。
请求的示例输入
起始uri值:www.example.com#page=1(或不设置#page)
然后在点击"next page"时调用setQueryString,因此值将等于:
var value = 2;
var uri = '#page1'
var key = 'page'
所以希望输出是'#page2'。
对于您的regex问题,可以使用regex /[#&]page'=('d*)/
和.match(regex)
方法来测试模式#page=(number)
或&page=(number)
是否存在并捕获数字。注意=
需要在正则表达式中进行转义。
如果模式存在于字符串中,result
将包含一个在result[1]
处的整数(作为字符串)的数组。如果模式不存在,则result
为null
。
//match #page=(integer) or &page=(integer)
var test = "#foo=bar&page=1";
var regex = /[#&]page'=('d*)/;
var result = test.match(regex);
console.log(result);
如果您想动态地将key=
设置为"page"
以外的值,您可以动态地构建regex,如下所示(注意,反斜杠需要在字符串中转义,使代码更复杂):
//dynamically created regex
var test = "#foo=bar&page=1";
var key = "page"
var regex = new RegExp("[#&]" + key + "''=(''d*)");
var result = test.match(regex);
console.log(result);
相关文章:
- Python Javascript哈希库,以确保JSON对象在传输过程中不会损坏
- 将 Javascript 哈希表用于多个 If Thens
- JavaScript 哈希更改转发按钮上的奇怪问题
- 在 HTML 模板中迭代 JavaScript 哈希
- 为什么我的 JavaScript 哈希带有保留字“toString”作为显示 NaN 的键
- Javascript哈希算法
- 如何使用 JavaScript 哈希作为函数中的参数
- 如何将 Python 字典转换为 JavaScript 哈希表
- 你如何观察 Knockout 中的 JavaScript 哈希表
- javascript哈希映射中的QML集成错误
- 为什么在参数传递过程中未评估javascript哈希对象
- 迭代javascript哈希数组的最佳方式
- Javascript哈希器嵌套函数
- javascript哈希值验证
- 自动热键将Javascript哈希添加到本地URL
- 如何获取 JavaScript 哈希表计数
- Javascript哈希值的总和
- Javascript哈希映射到访问对象元素
- Javascript哈希在AJAX登录调用,更安全
- 为什么Javascript哈希使用一个对象作为键会覆盖另一个对象键?