Javascript 问题 : Script that checks to see if words were included in an input box. 仅全字

标签 javascript

我有一个输入框,效果很好,但我的问题是脚本检查其中是否包含某些单词。现在我有:

$gameVariables.value(1).toLowerCase().includes("steal") || $gameVariables.value(1).toLowerCase().includes("thief") || $gameVariables.value(1).toLowerCase().includes("pickpocket")

这工作得很好,但我更希望它只适用于整个单词。我该如何去做呢?

我还想知道是否有办法缩短这个脚本,这样我就不必为每个单词复制并粘贴到同一行。我尝试了以下代码(不起作用。它只适用于第一个单词,但不适用于后面的单词。):

$gameVariables.value(1).toLowerCase().includes("steal","thief","pickpocket")

最佳答案

如果您只想要与 theifstealpickpocket 完全匹配的单词,您可以使用以下代码

    const value = $gameVariables.value(1);
    const regex = /^(thief|steal|pickpocket)$/i;
    return regex.test(value);

解释一下上面的正则表达式,

  • ^ 将确保正则表达式从一开始就匹配
  • () 创建正则表达式应匹配的组
  • | 就像编码中的 or 运算符
  • $ 用于当您希望结尾与正则表达式的结尾完全匹配时
  • i 基本上是一个标志,告诉您在进行检查时忽略大小写。因此,您也不需要在此处使用 .toLowerCase()

因此,上面的代码基本上会检查该单词是否与 theifstealpickpocket 完全匹配,并返回 false 如果单词是 theifstheifsteal

但是,如果您不需要完全匹配,只想知道输入值是否包含这些单词,那么简单的答案是不使用 ^$

    const value = $gameVariables.value(1);
    const regex = /(thief|steal|pickpocket)/i;
    return regex.test(value);

结果是,对于 thiefstealpickpocket 等精确匹配来说,它是正确的,并且当这两个词中的任何一个都出现在整个语句中,例如this statements contains thief。对于像 theSTL 这样的词,第二种方法会失败。但问题是它也会与 steals 匹配,或者对于像 this statements containssteals 这样的语句返回 true。要修复它,您可以使用以下代码

    const value = $gameVariables.value(1);
    const regex = /(thief|steal|pickpocket)\b/i;
    return regex.test(value);
  • \b 允许您执行“仅全字”搜索

因此,如果语句包含thisstatement containssteal,它将返回 false,但当语句包含thisstatement containssteal 或与 完全匹配的单词时,它将返回 true >窃取

关于Javascript 问题 : Script that checks to see if words were included in an input box. 仅全字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59683933/

相关文章:

javascript - 带有授权 header 的 Ajax GET

javascript - DanialFarid Ng 文件上传问题

Javascript 这行代码是什么意思

Javascript - For 循环无法正确找到数组中的值

javascript - 标签允许用户输入

javascript - Cypress :运行所有规范,但创建一个没有运行规范的循环

javascript - JavaScript 中的类型强制转换是如何完成的?

javascript - 在 Chrome 中更改本地时区

javascript - 来自 bookmarklet 的代码在控制台中有效,但在我的 Tampermonkey 脚本中无效?

javascript - 使用ajax增加整数模型变量