javascript - 工作结束后得到一根绳子

标签 javascript

我有一个如下字符串,也可以是与此类似的任何字符串:

http://localhost:3003/?sp-tk=A8FEE0A4AFD2A086277CC79449AD69E5D34734455900AEED7C0A7C77EC580187D9D2FE1B286F7B5989B421B27E6FE2D1CAD2CCEB4372A80FFF6DC5D1AC6E246DB3BBAD7EB8DD7DAD1C5ED79A2114F0E3A036E898287021ABEFE642F74FAE5372E6525E0C54732B7EA9691F84C27EEB6AE60029B7613B68DA8DA3AE69887F6E815EA0A3415F08C827AF21DBFB82AE7247B297F8CFAD0DD3F7D0ED81FC095375F6242CED940B2B55D8707BCB1D85E54CBB98E83CB8

我需要的是 sp-tk 之后的部分:

A8FEE0A4AFD2A086277CC79449AD69E5D34734455900AEED7C0A7C77EC580187D9D2FE1B286F7B5989B421B27E6FE2D1CAD2CCEB4372A80FFF6DC5D1AC6E246DB3BBAD7EB8DD7DAD1C5ED79A2114F0E3A036E898287021ABEFE642F74FAE5372E6525E0C54732B7EA9691F84C27EEB6AE60029B7613B68DA8DA3AE69887F6E815EA0A3415F08C827AF21DBFB82AE7247B297F8CFAD0DD3F7D0ED81FC095375F6242CED940B2B55D8707BCB1D85E54CBB98E83CB8

为此,我找到了如下代码:

function getTokenFromUrl() {
    name="sp-tk";
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/,
        "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);
    if (results == null)
        return "";
    else
        return decodeURIComponent(results[1].replace(
            /\+/g, " "));
}

并且它有效。但我不明白正则表达式部分。任何人都可以阐明这一点,以及是否有一种更简单、更干净的方法来实现这一点?

最佳答案

您可以使用此代码(我认为此正则表达式更易于阅读):

    var myString = 'http://localhost:3003/?sp-tk=A8FEE0A4AFD2A086277CC79449AD69E5D34734455900AEED7C0A7C77EC580187D9D2FE1B286F7B5989B421B27E6FE2D1CAD2CCEB4372A80FFF6DC5D1AC6E246DB3BBAD7EB8DD7DAD1C5ED79A2114F0E3A036E898287021ABEFE642F74FAE5372E6525E0C54732B7EA9691F84C27EEB6AE60029B7613B68DA8DA3AE69887F6E815EA0A3415F08C827AF21DBFB82AE7247B297F8CFAD0DD3F7D0ED81FC095375F6242CED940B2B55D8707BCB1D85E54CBB98E83CB8'

    var myRegexp = /sp-tk=(.*?)(&|$)/;
    var match = myRegexp.exec(myString);
    var spTk = match[1]
    console.log(spTk);

正则表达式解释

  • sp-tk= => 查找以 sp-tk= 开头的字符串
  • (.*?) => 字符串后面应该跟任何字符(? 代表非贪婪模式)并用括号括起来,因为我们想要提取这部分的匹配。
  • &|$ 由于我们处于非贪婪模式,我们必须说出 .* 位于哪些字符上?应该停止。

然后您将在索引 1 处获得匹配,因为 0 是整个匹配(包括 sp-tk)


请注意,如果 sp-tk 之前或之后有其他 url 参数,则此正则表达式将起作用。

关于javascript - 工作结束后得到一根绳子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45634692/

相关文章:

java - 脚本语言和编译语言

javascript - jstree:创建一个新的子节点

javascript - 将上下文菜单 (context.js) 附加到 cytoscape.js 中的节点

JavaScript 显示和隐藏选择列表

Javascript 字符串到对象/数组

javascript - JS中的递归函数问题

javascript - 如何为小部件的选项指定默认值?

javascript - jQuery 是如何让 jQuery 对象既是函数又是对象属性的呢?

javascript - 无法使用 Canvas 绘制正确的圆圈

javascript - 如何使用 python lxml 提取 javascript 变量的值