开发者问题收集

无法访问 JS 正则表达式结果 - 无法读取 null 的属性‘1’

2017-09-05
386

我有一些代码,用于从页面抓取 URL,然后使用正则表达式获取两个字符串之间的文本。当我这样做时,我得到了我想要的匹配,但我无法访问结果。

evaluated.forEach(function(element) {
    console.log(element.match(/.com\/(.*?)\?fref/)[1]);
}, this);

如果我删除 [1] ,我会在控制台中看到结果为:

[
    '.com/jkahan?fref',
    'jkahan',
    index: 20,
    input: 'https://www.example.com/jkahan?fref=pb&hc_location=friends_tab' 
]

但是当我添加 [1] 来访问我想要的结果时,我得到:

TypeError: Cannot read property '1' of null.

1个回答

您似乎已对数组中的所有元素进行了 evaluated 操作。我猜想其中一个元素不匹配,因此会引发错误,因为在这种情况下, match 将返回 null

最好先将 match 的结果存储在变量中。这样,您可以在访问 [1] 之前检查它是否为 null

evaluated.forEach(function(element) {
    var result = element.match(/.com\/(.*?)\?fref/);  // store the result of 'match' in the variable 'result'
    if(result)                                        // if there is a result (if 'result' is not 'null')
        console.log(result[1]);                       // then you can access it's [1] element
}, this);
ibrahim mahrir
2017-09-05