0

I'm doing a sports-related quiz in JavaScript/jQuery: http://jsfiddle.net/zVsxf/

I've cobbled some code together from answers on this site and it works fairly well but I have a small problem. I don't want the user to get credit for answering the Red Sox" and the Red Wings as soon as s/he enters "Red". The same with "Blue" (Blues/Blue Jays/Blue Jackets) and "White" (White Sox).

I just need a regular expression, if it exists, or some advice on this part. Here's the most relevant code I have so far (in the jsFiddle link, it's on line 56:

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

2 に答える 2

1

コメントでのアーニーの提案に従って、正規表現を捨てて、次のように完全一致を行うだけです。

変化する

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 に答える