我制作了一个搜索引擎,并将搜索字符串与单词列表进行比较。但是我想省略"How,do,i"
之类的词。所以如果用户搜索"How do I find my IP?"
。如果我有另外3件以How do I
开头的项目,它将无法真正返回好的相关性。如何使用正则表达式比较单词,但忽略某些单词?
现在它的设置(a-z0-9)+userinput+(a-z0-9)
希望有一个单词的列表被省略,所以他们不会被匹配。我只使用JavaScript,请协助。
我制作了一个搜索引擎,并将搜索字符串与单词列表进行比较。但是我想省略"How,do,i"
之类的词。所以如果用户搜索"How do I find my IP?"
。如果我有另外3件以How do I
开头的项目,它将无法真正返回好的相关性。如何使用正则表达式比较单词,但忽略某些单词?
现在它的设置(a-z0-9)+userinput+(a-z0-9)
希望有一个单词的列表被省略,所以他们不会被匹配。我只使用JavaScript,请协助。
另一个更新的例子,现在用\ 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>
这很有效,但由于某些原因,它与第一个单词不匹配.EX:“如果我无法查看网页,该怎么办”即使不在不需要的单词列表中,“什么”也不会被忽略。它似乎跳过了短语中的第一个单词。任何想法为什么? – 2010-10-21 12:27:36
@Roy Rideaux:什么?在上面的例子中,“what”不在不需要的单词列表中,因此不应删除。 “如果我无法查看网页,我该怎么办”中没有一个词匹配,因为它会查找短语“我该怎么做”或“我在哪里”。你确定你在搜索字符串之前和之后添加一个空格,就像我上面做的那样?对于正则表达式来说这是必要的,否则会变得复杂。 – some 2010-10-21 12:58:08
我已经在FF3.6,Opera 10,Chrome 6和MSIE 8上试过了,我无法复制你的问题。它的工作原理应该如此。 – some 2010-10-21 13:02:38
预扫描变量和除去所有不需要的话? – some 2010-10-21 02:47:13
你有任何示例代码向我们展示? – drudge 2010-10-21 03:01:47