【问题标题】:Check for required exact keyword(s) in text (javascript)检查文本中所需的确切关键字(javascript)
【发布时间】:2011-02-21 05:37:44
【问题描述】:

我需要能够检查所需的关键字。

这是我目前正在使用的:

    // Check for all the phrases
    for (var i = 0; i < phrases.length; i++) {
      if (value.toLowerCase().indexOf(phrases[i].toLowerCase()) < 0) {
         // Phrase not found
         missingPhrase = phrases[i];
         break;
      }
    }

问题是如果包含“randomize”,它会说“random”没问题。

我发现了这个:how to check if text exists in javascript var(只是一个例子)

但不确定将其合并到 jQuery 中并可能检查多个关键字的最佳方法。

【问题讨论】:

  • 斯蒂芬给了你一个好主意,但是你能给我们一个短语和值的示例列表吗,我可以给你一个例子来说明如何做到这一点。

标签: javascript jquery


【解决方案1】:
var value_mod = " " + value + " "; // put a fake white space at the beginning and end so we can have a word boundary at the start and end of the line
var regs = [];
var i;
for (i = 0; i < phrases.length; i++) {
    regs.push = new RegExp("\\b" + phrases[i] + "\\b", "i"); /* \b is "word boundary"   "i" for case-insensitive */
}
for (i = 0; i < regs.length; i++) {
     if (regs[i].test(value_mod)) {
        // expression match on whole word.
     } else {
         missingPhrase = phrases[i];
         break;
     }
  }
}

【讨论】:

    【解决方案2】:

    使用您链接的功能,您可以:

    ".randomize blah...asd.".containsWord("(hello|blah)")
    

    这是因为正则表达式可以匹配不同的字符串,如您所见here

    为了使其更具可读性,您可以修改 containsWord 以接受一个数组,并转义字符并基于它制作正则表达式。

    祝你好运!

    【讨论】:

    • 是的,但是如果“hellos”是一个子字符串,那么该模式将匹配它,这不是提问者想要的。
    • 我同意,这种字符串匹配的方式可以简洁很多,值得追求。
    • @Andrew:链接示例中的正则表达式非常精确,只会在单词边界之间选择整个单词。
    • @Andrew 查看 containsWord 的原始来源(由@Ricky 链接): var regex = new RegExp( '\\b' + word + '\\b' );它不会匹配。用“随机”试试。
    • 它不一定来自链接的示例代码,我只是找到它并认为它可能会有所帮助。我宁愿它基于我当前正在使用的问题中提供的代码。谢谢帮助。
    【解决方案3】:

    如果您正在寻找关键字,那么为什么不 split() 将空格字符上的值分隔成一个数组。然后遍历数组寻找关键字。

    考虑到 cmets: 您还应该删除各种标点符号,也许用空格替换它们。

    【讨论】:

    • 您可能还希望事先从字符串中删除标点符号,以便“随机”。仍然匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 2015-11-01
    • 2019-07-20
    相关资源
    最近更新 更多