0

我正在用 JavaScript/jQuery 做一个与运动相关的测验:http: //jsfiddle.net/zVsxf/

我从这个网站上的答案拼凑了一些代码,它工作得很好,但我有一个小问题。我不希望用户一输入“Red”就因为回答 Red Sox 和 Red Wings 而获得荣誉。“Blue”(Blues/Blue Jays/Blue Jackets)和“White”也是如此(白袜队)。

我只需要一个正则表达式,如果它存在,或者这部分的一些建议。这是我迄今为止最相关的代码(在 jsFiddle 链接中,它位于第 56 行:

if (current_name.match(RegExp('\\b' + entry + '\\b', 'i')))
4

2 回答 2

1

根据 ernie 在评论中的建议,放弃你的正则表达式,只需像这样进行完全匹配:

改变

if (current_name.match(RegExp('\\b' + entry + '\\b', 'i')))

至:

if (current_name.toLowerCase() == entry.toLowerCase())

jsfiddle

用于toLowerCase()更改正确答案和用户提交的内容全部小写,这样您就不必担心“红袜队”和“红袜队”之间的区别

于 2013-06-06T23:26:21.437 回答
0

如果球队是“红袜队”并且他们输入“R”,我认为你上面的内容会返回 true。我想我会检查团队名称是否有多个单词,如果是这样,那么匹配将是第一个单词而不是整个团队名称。

就像是:

var match_compare;
var index = current_name.indexOf(' ');
if(index >= 0) {
    match_compare = current_name.substring(0, index);
}
else {
    match_compare = current_name;
}

// Then actually compare. I think they should be the exact same, just maybe 
// ignore case
if(match_compare.toLowerCase() == entry.toLowerCase()) {
    // Handle match
}
于 2013-06-06T23:22:32.953 回答