2010-10-21 95 views
1

我制作了一个搜索引擎,并将搜索字符串与单词列表进行比较。但是我想省略"How,do,i"之类的词。所以如果用户搜索"How do I find my IP?"。如果我有另外3件以How do I开头的项目,它将无法真正返回好的相关性。如何使用正则表达式比较单词,但忽略某些单词?

现在它的设置(a-z0-9)+userinput+(a-z0-9)希望有一个单词的列表被省略,所以他们不会被匹配。我只使用JavaScript,请协助。

+0

预扫描变量和除去所有不需要的话? – some 2010-10-21 02:47:13

+3

你有任何示例代码向我们展示? – drudge 2010-10-21 03:01:47

回答

0

另一个更新的例子,现在用\ b

<html> 
    <head> 
    <script type="text/javascript"> 
     var unwanted = new RegExp(
      "\\b("+ [ 
       "(how|where|what) do (I|you)", 
       "some", 
       "other", 
       "words", 
       "or phrases", 
       "that", 
       "is", 
       "unwanted" 
      ].join("|")+ ")(?=\\b)", 
     "ig" // Ignore case, global 
     ); 

     function dosearch(e){ 
      var search = e.search.value; 
      search = search.replace(unwanted,""); 

      alert(search); 
      return false; 
     } 
     </script> 
</head> 
<body> 
    <form method="post" action="" onsubmit="return dosearch(this)"> 
     search: <input type="text" name="search"> 
    </form> 
</body> 
</html> 
+0

这很有效,但由于某些原因,它与第一个单词不匹配.EX:“如果我无法查看网页,该怎么办”即使不在不需要的单词列表中,“什么”也不会被忽略。它似乎跳过了短语中的第一个单词。任何想法为什么? – 2010-10-21 12:27:36

+0

@Roy Rideaux:什么?在上面的例子中,“what”不在不需要的单词列表中,因此不应删除。 “如果我无法查看网页,我该怎么办”中没有一个词匹配,因为它会查找短语“我该怎么做”或“我在哪里”。你确定你在搜索字符串之前和之后添加一个空格,就像我上面做的那样?对于正则表达式来说这是必要的,否则会变得复杂。 – some 2010-10-21 12:58:08

+0

我已经在FF3.6,Opera 10,Chrome 6和MSIE 8上试过了,我无法复制你的问题。它的工作原理应该如此。 – some 2010-10-21 13:02:38

相关问题