如何在JavaScript中检查用户输入的英文单词是否有效

3
我将使用JavaScript制作一个游戏,让用户选择给定的字符并组成一个有效的英语单词。现在问题是如何在JavaScript中检查用户输入的是否是有效的英语单词,例如,我给用户以下字母:

  1. O
  2. D
  3. O
  4. G

现在他可以从这些字符中组成三个单词:God、Good或Dog。

提前致谢。

编辑

这个怎么样?

Typo.JS

这样做是好的方式还是不好的方式?

4
你需要一种词典——可以是你自己维护的,也可以找到一个已有的网络词典,该词典提供了API供你调用。 - undefined
这需要一个单词字典,参见 https://dev59.com/v2025IYBdhLWcg3wLitX - undefined
3
你忘了“Goo”、“Do”和“Go”。 - undefined
5个回答

5
他也可能会写DOGO。您需要使用允许单词的字典,并根据该字典检查答案。
var allowedWords = ['god','good','dog','do','go'];
var enteredWord = 'GOD';

if(allowedWords.indexOf(enteredWord.toLowerCase()) >= 0) {
   // match
}

如果我将do视为有效的或任何合法的内容,那么怎么办呢?在这种情况下,我必须制作自己的字典。 - undefined

2

这里有一个英文单词MySql数据库。

http://androidtech.com/html/wordnet-mysql-20.php

现在你需要实现服务器端功能。当单词不存在时将返回true或false。您可以使用Jquery调用Ajax服务并检查游戏中的单词。


1

1
如果您有多个问题,也可以像这样验证答案:
var gameDict = [
    { 'letters':['o','d','o','g'],  'words':['god','good','dog','do','go', 'goo']},
    { 'letters':['a','e','p'],      'words':['ape']},
    { 'letters':['p','n','e','t'],  'words':['pen', 'ten', 'net']}
]

// Returns `true` if the answer is valid, `false` if it's not.
function validateAnswer(questionNumber, answer){
    return gameDict[questionNumber].words.indexOf(answer.toLowerCase()) >= 0;
}

console.log(validateAnswer(0,'Good'));
// true
console.log(validateAnswer(1,'ap'));
// false

是的,您将不得不为您的游戏手动编写字典,因为除了检查单词是否真的是英语单词之外,您还必须检查您的字符是否能够组成该单词。


0
如Thor所建议的,您需要一个字典(一个包含您认为有效的“英语单词”的字符串数组)。
但是,如果您真的想要检查输入是否与任何“英语词典”中的英语单词匹配,那么这个单词数组将会非常庞大,并且由于它将与Javascript一起加载,Javascript文件将变得太大而无法与您的网页一起下载。
在这种情况下,您需要一个数据库(比如MySQL)来存储这些单词,以及一个在服务器上运行的脚本(比如PHP),您可以通过ajax调用将单词传递给该脚本。该脚本将在数据库上进行查询,以查看该单词是否存在,并将结果作为ajax响应返回给您的Javascript(1=英语单词,0=不在字典中的单词)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接