【问题标题】:Update URL parameter with javascript/jquery with a regEx使用正则表达式使用 javascript/jquery 更新 URL 参数
【发布时间】:2013-05-07 11:32:28
【问题描述】:

我有一个这样的网址:

http://www.example.com/index.php?mod=7&sec=franquicias&month=10&year=2013

里面有一个日期选择器;这应该改变获取参数的月份和年份;然后重新加载页面。

在 HTML 中,我在负责减少日期的按钮中执行以下操作:

<button type="button" class="btnIcon previous lbutton" onclick="changeMonth('previous',{$smarty.get.month},{$smarty.get.year})">

需要管理的javascript函数是:

    function changeMonth(changeType, month, year){
    changeMonth;

    switch (changeType){
    case "previous":
        changeMonth = month-1;
        if (changeMonth <= 0) changeMonth = 12;
        if (changeMonth < 10) changeMonth = "0"+changeMonth;
        window.location = updateURLParameter($(location).attr('href'), month, changeMonth);
        break;
    case "next":
        break;
    }       
}

function updateURLParameter(url, param, paramVal){

    var regEx = /month=[0-9]{3}/;
    console.log("paramVal: "+paramVal);
            // paramVal here is ever correct.
    var newUrl = url.replace(regEx, 'month='+paramVal);

    console.log(newUrl);
    return newUrl;
}

它似乎应该可以工作,现在奇怪的是,只有当 url 中的 GET 参数为 &month=03 时才有效,当有其他月份时,url.replace 不能正确替换 url。重要的是要注意函数“updateUrlParameter”中的“paramVal”总是正确的;所以问题出在'function updateUrlParameter'的urlReplace中。

感谢您的帮助。

【问题讨论】:

  • 试试/month=[0-9]{1,3}/
  • 如果我写/month=[0-9]{1,3}/ 页面不会加载...但是你给了我尝试/month=[0-9]*/ 的想法并且它正在工作;谢谢。

标签: javascript jquery url


【解决方案1】:

即使month=03,我也看不出它是如何工作的。 [0-9]{3} 恰好匹配 3 位数字,而 03 不匹配。正确的正则表达式是:

/\bmonth=\d{2}\b/

【讨论】:

    猜你喜欢
    • 2012-11-30
    • 2016-07-23
    • 2020-02-02
    • 1970-01-01
    • 2014-09-14
    • 2016-05-06
    • 2011-08-29
    • 1970-01-01
    相关资源
    最近更新 更多