用正则表达式提取属性值Imacros

时间:2017-12-25 10:33:43

标签: javascript regex imacros

我刚刚在iMacros中学习RegEx,并希望提取该用户的ID。

<a href="https://web.facebook.com/guruBKjualan?fref=gm&amp;dti=634080336761016&amp;hc_location=group" data-hovercard="/ajax/hovercard/user.php?id=1481093529&amp;extragetparams=%7B%22fref%22%3A%22gm%22%2C%22directed_target_id%22%3A634080336761016%2C%22dti%22%3A634080336761016%2C%22hc_location%22%3A%22group%22%7D" data-hovercard-prefer-more-content-show="1" aria-controls="js_c" aria-haspopup="true" aria-describedby="js_d" id="js_e">Decky Zulkarnain</a>

在此示例中,提取的数据应为 1481093529

该方法当然使用提取html代码,然后找到匹配的值并提取它。

我正在尝试这个

SET !VAR2 EVAL("var s=\"{{!EXTRACT}}\"; s.match(/user.php?id=[\"'](\d+?)[&]/)[1];")

但没有运气。 几次之后,我得到了这个。

SET !VAR2 EVAL("var s=\"{{!EXTRACT}}\"; s.match(/data-hovercard=[\"'](.+?)[\"']/)[1];")

它确实获得了整个数据-hovercard属性。只是不是我需要的东西。但我以前的尝试怎么可能不起作用?我错过了什么吗?

由于

1 个答案:

答案 0 :(得分:0)

尝试

/(?<=(id=)).*(?=&)/g

<强>解释

  • (?<=(id=))匹配但未捕获为匹配 id =
  • .*匹配所有字符
  • (?=&)匹配&,但不记得比赛。

<强>演示

&#13;
&#13;
var input = '<a href="https://web.facebook.com/guruBKjualan?fref=gm&amp;dti=634080336761016&amp;hc_location=group" data-hovercard="/ajax/hovercard/user.php?id=1481093529&amp;extragetparams=%7B%22fref%22%3A%22gm%22%2C%22directed_target_id%22%3A634080336761016%2C%22dti%22%3A634080336761016%2C%22hc_location%22%3A%22group%22%7D" data-hovercard-prefer-more-content-show="1" aria-controls="js_c" aria-haspopup="true" aria-describedby="js_d" id="js_e">Decky Zulkarnain</a>';
var regex = /(?<=(id=)).*(?=&)/g;
var output = input.match( regex );

if ( output )
{
  console.log( output[ 0 ] );
}
&#13;
&#13;
&#13;