首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript - Regex匹配而不是函数

JavaScript - Regex匹配而不是函数
EN

Stack Overflow用户
提问于 2018-02-13 20:26:33
回答 2查看 4.1K关注 0票数 0

我正在试图找到一个加载在页面上的脚本,并从它的名称中解析一个查询参数值。下面的设置已经过测试,并提取了加载在页面上的所有资源的名称,但是当我试图提取匹配regex字符串的第一个实例时,我会遇到以下错误。从这个资源名称中,我想解析在名称中找到的单个查询字符串参数的值。

错误:

代码语言:javascript
复制
Capture Snowplow Pixel:25 Uncaught TypeError: resourceArr.match is not a function
    at <anonymous>:25:36

代码:

代码语言:javascript
复制
//Query String Parser
var getQueryString = function ( field, url ) {
    var href = url ? url : window.location.href;
    var reg = new RegExp( '[?&]' + field + '=([^&#]*)', 'i' );
    var string = reg.exec(href);
    return string ? string[1] : null;
};

//Results Array
var resourceArr = [];

//Store Loaded Resources
var resource = window.performance.getEntriesByType("resource");

//Store Names of Loaded Resources
var resourceName = resource.forEach(function(resource){
   return resourceArr.push(resource.name);
 });

console.log(typeof resourceArr);
//RegEx Looking for Snowplow Pixel
 var re = /.*events\.fivetran\.com\/snowplow\/.*\/i\?e=pv.*/i;

//Grab First Snowplow Pixel
var snowplowPixelUrl = resourceArr.match(re);

//Store eid from Snowplow Pixel
var eid = getQueryString(eid, snowplowPixelUrl)

console.log(eid);

资源名称示例:

代码语言:javascript
复制
https://events.fivetran.com/snowplow/2j32424h2h4/i?e=pv&url=....&eid=j2447
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-13 20:32:19

resourceArr是一个数组。match是String类上的实例方法。也许这就是为什么你会收到错误,说resourceArr.match不是一个函数。

对象/字符串/匹配

票数 3
EN

Stack Overflow用户

发布于 2018-02-13 20:50:01

正如我在注释中指出的,resourceArr不是一个字符串,它是一个数组,因此它没有.match()方法。首先,您需要找到一个与regex匹配的字符串,然后在其上调用.match()Array.prototype.find()就是这样做的,但是要支持较旧的浏览器,您需要使用这种聚酰亚胺。下面是如何更正您的代码:

代码语言:javascript
复制
var snowplowPixelUrl = resourceArr.find(function (name) {
  return re.test(name);
}).match(re);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48775055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档