【问题标题】:Extract specific data from JavaScript .getAttribute() [duplicate]从 JavaScript .getAttribute() 中提取特定数据 [重复]
【发布时间】:2014-04-17 02:04:56
【问题描述】:

假设我有这个 HTML 链接。

<a id="avId" href="http://www.whatever.com/user=74853380">Link</a>

我有这个 JavaScript

av = document.getElementById('avId').getAttribute('href')

返回:

"http://www.whatever.com/user=74853380"

如何从结果字符串中专门提取74853380

【问题讨论】:

    标签: javascript string parsing


    【解决方案1】:

    你可以使用正则表达式:

    var exp = /\d+/;
    var str = "http://www.whatever.com/user=74853380";
    console.log(str.match(exp));
    

    解释:

    /\d+/ - 表示“一位或多位”

    另一种需要查找多个数字的情况

    "http://www.whatever.com/user=74853380/question/123123123"
    

    您可以使用 g 标志。

    var exp = /\d+/g;
    var str = "http://www.whatever.com/user=74853380/question/123123123";
    console.log(str.match(exp));
    

    你可以用正则表达式play

    【讨论】:

    • 这个也很好用。由于我需要另一个变量中的数字供以后使用,我可以这样做id = str.match(exp);
    • @Marian 当然可以,你可以这样使用 var id = str.match(exp)[0];
    【解决方案2】:

    嗯,你可以split() 得到一个单行答案。

    var x = parseInt(av.split("=")[1],10); //convert to int if needed
    

    【讨论】:

    • 这样不行,如果before user传递了一个额外的参数呢?兄弟抱歉。但是虽然很乱,你仍然可以在"user=" 而不是"=" 处分开
    • 嗯,有很多“假设”可能发生,答案可以相应调整。
    • 这还不够好。这不仅有可能,而且很可能会遇到问题,而且这是一个糟糕的、容易出错的解决方案。我知道这个问题很可悲哈哈但仍然
    【解决方案3】:

    有几种方法可以做到这一点。

    1.) 使用substrindexOf 提取它

    var str = "www.something.com/user=123123123";
    str.substr(str.indexOf('=') + 1, str.length);
    

    2.) 使用正则表达式

    var str = var str = "www.something.com/user=123123123";
    // You can make this more specific for your query string, hence the '=' and group
    str.match(/=(\d+)/)[1];  
    

    您还可以拆分= 字符并获取结果数组中的第二个值。您最好的选择可能是正则表达式,因为它更强大。如果查询字符串变得更复杂,拆分字符或使用substrindexOf 可能会失败。如果需要,Regex 还可以捕获多个组。

    【讨论】:

    • 感谢您解决了我的问题,效果很好!
    • 完全没问题。很高兴我能帮忙:)
    • 如果让我们说在 = 的末尾而不是数字我有一个词?喜欢“尼克”吗?
    • 然后你可以使用/=(\w+)/ 作为你的正则表达式。这将捕获= 之后的任何字母数字字符串。题外话,但是this is a site 我用来练习和原型化正则表达式。真的帮了我。如果 regex 可以做什么,那里的参考是一个非常小的子集,但它是一个很好的起点。
    猜你喜欢
    • 1970-01-01
    • 2018-09-06
    • 2012-07-19
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    相关资源
    最近更新 更多