JavaScript函数测试简单的正则表达式但在某些情况下失败

时间:2017-04-22 18:22:35

标签: javascript regex

所以我有这个freeCodeCamp项目用于构建一个带有JavaScript的Tic-Tac-Toe游戏。代码中的一个函数编写如下:

function searchRegex(list, who) {
    var whoRegex = who === 1 ? player1.regex : player2.regex;
    return list.findIndex(function(c) {
        return whoRegex.test(c) && c.split('').indexOf('-') > -1;
    });
}

例如,如果player1选择'X',CPU将使用'O',并且每个玩家对象中的正则表达式为:

player1.regex = /(X-X|XX)/g
player2.regex = /(O-O|OO)/g

每次计算机即将采取行动时,首先要评估它是否即将获胜(因此它会标记并获胜)。如果所有行,列和十字从searchRegex函数返回-1,它将查找它将要丢失的情况(因此它会标记并避免丢失)。如果第二个条件不成立,那么玩家就不会赢,它会运行其他代码来决定下一步行动。

问题是:有时计算机即将获胜,但函数返回-1,因此代码知道它不是。

它出现的一种情况是我有这样的行数组:

rows = ["O-O","XO-","X-X"];

第一次检查,代码调用searchRegex(rows,0),因此它会检查player2.regex匹配的行列表。

在我看来,当searchRegex函数评估该箭头时,rows[0]应该匹配,但它返回-1。我想知道为什么......

有人能看到我错过的东西吗?

P.S。:当代码读取行,列和十字时,它会在斑点为空时放置一个连字符。

0 个答案:

没有答案