【问题标题】:javascript: regular expression to parse url stringjavascript:解析url字符串的正则表达式
【发布时间】:2012-08-09 05:46:08
【问题描述】:

我正在尝试使用正则表达式来提取查询字符串参数的值

到目前为止,我带来了以下内容:

app.getValue = function() {
  var regExp = '[&?]'+$("#token").val()+'=(.*?)[&$]';
  var re = new RegExp(regExp);
  var res = re.exec($("#url").val());
  if (!res) return '';
  return res[1] || '';
}

问题似乎是结果表达式末尾的“$”被解释为文字字符,而不是输入字符串的结尾

所以使用以下查询字符串:

http://wines?len=10&page=500&filter=bogota and salvador&sort=name asc

如果我在字符串末尾添加“&”或“$”,则查找标记“排序”不会让我得到任何东西...

我错过了什么吗?

【问题讨论】:

标签: javascript regex query-string


【解决方案1】:

我看起来无法在字符类组内表达行尾字符。相反,我认为您可以只使用 (&|$|,) 来匹配逗号、与号或行尾。请注意,这会创建一个新的匹配组,但这不会影响您的代码。

【讨论】:

    【解决方案2】:

    试试这个

    var urlParams = {};
    (function () {
        var match,
            pl     = /\+/g,  // Regex for replacing addition symbol with a space
            search = /([^&=]+)=?([^&]*)/g,
            decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
            query  = window.location.search.substring(1);
    
        while (match = search.exec(query))
           urlParams[decode(match[1])] = decode(match[2]);
    })();
    

    示例:

    ?var1=test1&var2=test2
    

    结果:

    alert(urlParams["var1"]);
    

    【讨论】:

    • 非常不错的一段代码,不过我仍在尝试完全掌握该正则表达式...
    猜你喜欢
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2016-04-29
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多