我正在开发一个独立的界面。
我有几个文本框,并且都有名称和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)呈现相同的结果。
对我来说看起来像个错误,其他人也发现了这个错误?
答案 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.");
}
}