【问题标题】:Running RegEx within Google Script If Statement在 Google Script If 语句中运行 RegEx
【发布时间】:2015-08-31 21:13:10
【问题描述】:

我正在使用 Google 脚本从与我的正则表达式匹配的列中提取值,但我似乎无法让我的正则表达式变量与我的 if 语句一起使用。当我将变量设置为字符串时,运行我的函数并获得响应没有问题,但它不适用于正则表达式,我正在尝试找出问题:

这是我的脚本:

function extractBranded() {

  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  for (var i = 0; i < data.length; i++) {

    var keywords = /ipad dns|dns system/;

    if (data[i][0] == keywords) {
      Logger.log(data[i][0]);
    } else {

    }
  }

Google 表格数据(查询 = A1 列和行):

Queries
dns system
dns systems
ipad dns
ipad dns system
business 101
ipad dns register
dns

理论上,这应该是我工作表中七个值中的四个。

我还尝试使用new RegExp() 调用构造函数,但这不起作用。有什么想法吗?

【问题讨论】:

  • 您的正则表达式读取为“ipad dn(s|d)ns 系统”,您缺少括号。
  • 使用if (data[i][0].match(keywords)) {,我得到了5个结果:dns systemdns systemsipad dnsipad dns systemipad dns register——是你要找的吗?你忘了打电话给.match()。或test():if (keywords.test(data[i][0])) {

标签: javascript regex google-sheets


【解决方案1】:

使用

if (data[i][0].match(keywords)) {

或者

if (keywords.test(data[i][0])) {

您将获得5个结果:

[15-08-31 23:27:52:850 CEST] dns system
[15-08-31 23:27:52:864 CEST] dns systems
[15-08-31 23:27:52:865 CEST] ipad dns
[15-08-31 23:27:52:866 CEST] ipad dns system
[15-08-31 23:27:52:866 CEST] ipad dns register

您忘记调用 match()test() 来实际应用您的正则表达式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2012-12-22
    • 2022-01-20
    • 2011-04-26
    • 2014-05-07
    • 2019-08-26
    • 2019-03-05
    相关资源
    最近更新 更多