【问题标题】:How to check the data type or the result of RegEx method如何检查数据类型或 RegEx 方法的结果
【发布时间】:2022-10-12 23:57:10
【问题描述】:

我用正则表达式编写了一个 Google Apps 脚本函数来从网页中检索信息。我每页有 10 条信息,有 10 种不同的正则表达式,但问题是当信息不存在时,相应的正则表达式出现错误。

TypeError:无法读取 null 的属性“1”。

我试图做一个测试来避免这个错误,但是一旦正则表达式模式没有找到任何东西,它就会返回这个错误。我无法在错误之前进行测试。

if (typeof(regExp.exec(html)[1]) === "null") {
var lastName = "error";
}else {
var lastName = regExp.exec(html)[1];
}
  • 您知道如何在 Regex 错误之前进行测试并指示该值为 false 或空吗?

【问题讨论】:

  • 尝试使用 try/catch 块来捕获错误,然后在每个错误之后继续。
  • Google Script 使用什么正则表达式引擎?这就是为什么我什至不看带有谷歌标签的问题。
  • @sln 同 JS es6

标签: javascript regex google-apps-script null typeerror


【解决方案1】:

var html 中的值是无效的,并且您正在尝试访问没有属性的空值。这会导致错误"TypeError: Cannot read property '1' of null"

要解决此问题,请添加一个 if 语句,它将检查 regExp.exec(html) 是否具有值,然后添加您的 if-else statement

您的代码应如下所示:

  if(regExp.exec(html){
    if (typeof(regExp.exec(html)[1]) === "null"){
    var lastName = "error";
    }else {
    var lastName = regExp.exec(html)[1];
    }
  }

【讨论】:

  • 谢谢。一个公式可以,但多公式不行
  • @gandolfi - 抱歉,但我认为这不是您帖子的主要问题。根据我的理解,您的主要问题是 TypeError: Cannot read property '1' of null 当正则表达式与您的 html 变量中的任何内容都不匹配时。我根据您提供的问题和示例脚本创建了答案。首先,您的帖子中没有说明将其应用于多个案例。我建议您针对该特定问题创建一个新帖子。见How do I ask a good question?
  • 对不起,如果我不清楚,因为我的英语不流利。我曾指出“我用 10 种不同的正则表达式每页获得 10 条信息”,以说明我的脚本的用途。不可能在这个帖子上回答?
猜你喜欢
  • 2020-10-29
  • 2012-01-14
  • 2015-03-18
  • 2011-06-27
  • 1970-01-01
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 2012-11-28
相关资源
最近更新 更多