2012-04-28 67 views
0

我使用jQuery解析了各种XML文件,并且已经实现了搜索功能以找出某个词或短语可以在当前选定的文件中找到,但我遇到了一个小问题下面这行代码:与jquery中的精确搜索字符串匹配

$("LINE:contains(" + query + ")",currentContext).each(function(){ 

搜索本身工作得很好,但是,这一行正在检索包含查询的所有单词。例如,如果我想找到“儿子”一词,它正在检索“季节”。

据我所知,这是寻找任何包含“儿子”的字符串。从我所看到的是,.filter()可能会解决我的问题,但我不确定如何去执行它到我的代码中,我试过类似$("LINE").filter(query,currentContext).each(function(),但无济于事,所以任何帮助将不胜感激。

的XML文件中的一个简单例子可以看这里:http://pastebin.com/1tqhpH4W

许多在此先感谢!

+1

我并不熟悉正则表达式,因为我喜欢,但是您的答案可能是使用'somestring.match(/ \ bson \ b /);'。我不确定这是否完全正确,但'\ b'在“儿子”周围放置了一个单词边界,并且您需要类似的东西。 – Marc 2012-04-28 14:54:43

+0

我是同一个家伙,想要在正则表达式上提高技巧,而且一般来说,你的权利和@VisioN在那里,只需要在“// b”中包装查询来设置字边界。感谢输入的老兄! – Michael 2012-04-28 15:05:44

+0

是VisioN在那里做了沉重的举动,我只是猜测。很高兴为你效力! – Marc 2012-04-28 15:07:45

回答

1

这样的事情呢?

var word = "son"; 
$("LINE", currentContext).filter(function() { 
    return new RegExp("\\b" + word + "\\b").test($(this).text()); 
}).each(function() { ... }); 
+0

这就是我所需要的!不知道是否需要另一个正则表达式,或者如果我可以使用过滤器。非常感谢兄弟! – Michael 2012-04-28 15:02:58

+0

不客气;) – VisioN 2012-04-28 15:04:07