0

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

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

如果我运行此代码:

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

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

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

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

总是进入“其他”分支。if (re.test(k) == true) 呈现相同的结果。

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

4

1 回答 1

0

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

下面的 myFunction2() 遵循“匹配”分支,因为您期望一个正常工作的正则表达式(所以也许这可以用来解决这个错误):

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() 意外地跟随到“不匹配”分支。

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.");
  }
}
于 2013-04-04T16:13:05.530 回答