【问题标题】:Tampermonkey - Cannot get data with RegexTampermonkey - 无法使用正则表达式获取数据
【发布时间】:2017-07-08 23:05:29
【问题描述】:

我正在尝试使用 JavaScript 通过 Tampermonkey 获取一些数据。问题在于正则表达式,我在 RegExr(Air 应用程序)中设计了它,它似乎在输入文本上工作正常:

<div class="yt-lockup clearfix  yt-lockup-video yt-lockup-grid vve-check" data-context-item-id="Rg2PUqmNWe4" data-visibility-tracking="abc">
  <div class="yt-lockup-dismissable">
      <div class="yt-lockup-thumbnail">
  <span class=" spf-link  ux-thumb-wrap contains-addto"><a href="/watch?v=Rg2PUqmNWe4" class="yt-uix-sessionlink" aria-hidden="true" data-sessionlink="videos">  <span class="video-thumb  yt-thumb yt-thumb-196">
<span class="yt-thumb-default">

但是在代码中它没有显示警报:

var lis = document.getElementById("data").getElementsByTagName("li");
//alert(lis.length);

var item = lis[0].innerHTML;
alert( item.match( /(?<=data-context-item-id=").*?(?=")/g ) );

如何返回字符串“Rg2PUqmNWe4”?

【问题讨论】:

    标签: javascript regex tampermonkey


    【解决方案1】:

    我认为这是解决这个问题的好方法:

    const data = `<div class="yt-lockup clearfix  yt-lockup-video yt-lockup-grid vve-check" data-context-item-id="Rg2PUqmNWe4" data-visibility-tracking="abc">
      <div class="yt-lockup-dismissable">
          <div data-context-item-id="this is also found" class="yt-lockup-thumbnail">
      <span class=" spf-link  ux-thumb-wrap contains-addto"><a href="/watch?v=Rg2PUqmNWe4" class="yt-uix-sessionlink" aria-hidden="true" data-sessionlink="videos">  <span class="video-thumb  yt-thumb yt-thumb-196">
    <span class="yt-thumb-default">`
    
    const getData = data => data.match(/data-context-item-id="(.*?)"/g).map(x => x.match(/"(.*?)"/)[1])
    
    console.log(getData(data))

    第 1 步
    data-context-item-id=" 找到此部分。
    第 2 步
    (.*?) 捕获任何内容,直到"
    第 3 步
    map all found answers 只获取没有属性名称的数据

    此解决方案的优点是可能出现不止一次的属性,如我在示例中所示。

    【讨论】:

    • @zeddex 我很高兴听到这样的消息:D
    【解决方案2】:

    Javascript 正则表达式引擎不支持 lookbehind assertions (?&lt;=...)
    使用以下方法:

    alert(item.match(/data-context-item-id="([^"]+)"/)[1]);
    

    ([^"]+) - 匹配除"以外的所有字符

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 2015-07-07
      相关资源
      最近更新 更多