2010-10-21 97 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

相關問題