我在JavaScript / jQuery中进行与体育相关的测验:http://jsfiddle.net/zVsxf/
我已经从本网站的答案中拼凑了一些代码并且它工作得很好,但我遇到了一个小问题。我不希望用户因回答红袜队而获得荣誉。一旦他/她进入红色"红色翅膀。与" Blue"相同(Blues / Blue Jays / Blue Jackets)和" White" (白袜队)。
我只需要一个正则表达式,如果它存在,或者就这一部分提出一些建议。这是我到目前为止最相关的代码(在jsFiddle链接中,它位于第56行:
if (current_name.match(RegExp('\\b' + entry + '\\b', 'i')))
答案 0 :(得分:1)
Per ernie在评论中提出的建议,抛弃你的正则表达式并简单地完成一个完全匹配:
更改
if (current_name.match(RegExp('\\b' + entry + '\\b', 'i')))
为:
if (current_name.toLowerCase() == entry.toLowerCase())
jsfiddle
使用toLowerCase()
更改正确答案和用户提交给所有小写字母的内容,这样您就不必担心“Red Sox”和“red sox”之间的区别
答案 1 :(得分:0)
我认为如果球队是" Red Sox"他们输入" R"。我想我会检查团队名称是否有多个单词,如果是,那么匹配将是第一个单词而不是整个团队名称。
类似的东西:
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
}