регулярное выражение для searchterm - PullRequest
1 голос
/ 26 июля 2011

Мне нужна помощь в создании RegEx для функции поиска на моем сайте. В настоящее время я использую JQuery Framework. Цель состоит в том, чтобы просмотреть абзацы в XML и вернуть узел, содержащий ключевые слова, вставленные в текстовое поле поиска.

Например, пользователь может ввести « Lorem Sed Pellentesque » в текстовое поле поиска, и я хотел бы использовать ключевые слова, введенные в текстовое поле и пройти через абзац найти эти ключевые слова независимо от их положения. Ниже приведен образец абзаца:

Nullam accumsan leo ultrices nisi consectetur blandit. целое число aliquam, urna nec vestibulum posuere, est ante sollicitudin мучителя, non 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 ]

1 голос
/ 26 июля 2011

Примерно так (не очень надежно, но будет работать для буквенно-цифровых ключевых слов):

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
  }
});
0 голосов
/ 26 июля 2011
    <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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...