regexp.test()返回boolean但不返回'if'语句 - 总是求值为

时间:2013-04-03 20:42:00

标签: google-apps-script

我正在开发一个独立的界面。

我有几个文本框,并且都有名称和ID。

如果我运行此代码:

var re = /someregexp/g;
var k ="sometext";

textBoxOne.setText(re.test(k)); //textBoxOne was selected first

显示正确的结果'true'或'false'。 要求'typeof(re.test(k))'正确返回布尔值。 但是这段代码:

if (re.test(k)) {
  textBoxTwo.setText("matched.");
} else {
  textBoxTwo.setText("NOT matched.");
}

始终进入'else'分支。 if(re.test(k)== true)呈现相同的结果。

对我来说看起来像个错误,其他人也发现了这个错误?

1 个答案:

答案 0 :(得分:0)

编辑:AdamL在下面的评论中指出(感谢Adam),这比我想象的要多得多。我将下面的原始代码留作参考。

下面的myFunction2()跟随“匹配”分支,因为你期望一个正确工作的正则表达式(所以也许这可以用来解决这个bug):

function myFunction2() {
  var k ="sometext";

  Logger.log(  /ome/g.test(k)  ); 
  if ( /ome/g.test(k)  ) {
    Logger.log("matched.");
  } else {
    Logger.log("NOT matched.");
  }
}

相反,正如您所观察到的,下面的myFunction()意外地跟随到“NOT matched”分支。

function myFunction() {
  var re = /ome/g;
  var k ="sometext";

  Logger.log(re.test(k));

  if (re.test(k)) {
    Logger.log("matched.");
  } else {
    Logger.log("NOT matched.");
  }
}