用于searchterm的正则表达式

时间:2011-07-26 18:27:03

标签: javascript jquery regex search

我需要帮助在我的网站上为搜索功能构建RegEx。我目前正在使用JQuery框架。目标是遍历XML中的段落并返回包含在搜索文本字段中插入的关键字的节点。

例如,用户可以在搜索文本字段中输入“ Lorem Sed Pellentesque ”,我想在文本字段中使用关键字输入并通过段落并找到这些关键字,无论关键字的位置如何。以下是该段的样本:

  

Nullam accumsan leo ultrices nisi consectetur blandit。整数   Aliquam,urna nec vestibulum posuere,e​​st ante sollicitudin tortor,   非feugiat eros orci vitae dui。在lacus nulla,feugiat vitae porta   vel,lobortis eget ligula。 Sed egestas aliquet orci ut varius。    Pellentesque ullamcorper magna eu sem convallis elementum。

因此,在这种情况下,此段落将被视为结果之一,因为它包含“Sed”和“Pellentesque”关键字。

是否可以构建可以遍历整个段落的RegEx?它是否区分大小写并不重要。

非常感谢任何帮助!提前谢谢。

2 个答案:

答案 0 :(得分:1)

像这样的东西(不是很强大,但适用于字母数字关键字):

var keywords = $('input').text().replace(" ", "|");
var re = new RegExp(keywords, "gi"); // make it global, case insensitive
var matches = re.exec("paraText");

虽然,你可以在没有正则表达式的情况下完成:

var keywords = $('input').text().split();
$(keywords).each(function() {
  if(paraText.indexOf(this) > 0) {
    // keyword found
  }
});

如果你想在单词边界之间进行匹配,你需要一些像这样的正则表达式:

var keywords = $('input').text().split();
$(keywords).each(function() {
  var re = new RegExp("\\b" + this + "\\b");
  if(re.test(paraText)) {
    // keyword found
  }
});

答案 1 :(得分:0)

    <script>
    var a=text.replace(/(Nullam|ligula|in)/ig,'<b>$1</b>');
    $('#ttt').html(a);
    </script>
<div id='ttt'>Nullam accumsan leo ultrices nisi consectetur blandit. Integer aliquam, urna nec vestibulum posuere, est ante sollicitudin tortor, non feugiat eros orci vitae dui. In lacus nulla, feugiat vitae porta vel, lobortis eget ligula. Sed egestas aliquet orci ut varius. Pellentesque ullamcorper magna eu sem convallis elementum.</div>

示例:http://jsfiddle.net/oceog/q8S7E/