Я закодировал функцию AJAX, чтобы сделать поисковую систему в базе данных. Я хочу выделить желтые искомые символы в отображаемом результате.RegExp - Заменить некоторые символы между <td> markups
Следующий код работает довольно хорошо:
$.ajax({
type: "GET",
url: "search_db.php",
data: "q="+valueSearch,
dataType: "JSON",
success: function(returnQuery) {
$("#table tbody").empty();
// console.log(returnQuery);
$.each(returnQuery, function(i, line) {
content = '<tr>';
content += '<td>' + line.name_serv + '</td>';
content += '<td>' + line.name_dns + '</td>';
content += '<td>' + line.ip + '</td>';
content += '<td>' + line.pass1 + '</td>';
content += '<td>' + line.pass2 + '</td>';
content += '</tr>';
re = new RegExp('('+valueSearch+')', "gi")
content2 = content.replace(re, '<span style="background-color: #ffff66;">$1</span>');
$(content2).appendTo("#table tbody");
});
},
error: function() {
$("#table tbody").empty();
}
});
Есть три случая, когда он не работает должным образом: если я ищу «д», «т» или 'г '(потому что замены сделаны в наклейках <td>
или <tr>
).
Вот пример переменной содержания:
"<tr><td>Jupiter</td><td>mail.test.com</td><td>10.0.0.1</td><td>root</td><td>a$01'deK</td></tr>"
Я пытаюсь сделать RegExp, чтобы добавить <span>
разметку только символы, совпадающих поиску между <td>
и </td>
, но я не нахожу правильный синтаксис.
Есть ли у кого-нибудь идеи (чистый JavaScript и/или jQuery)?
Правило 1: не используйте RegEx для анализа HTML. Правило 2: если вы все еще хотите анализировать HTML с помощью RegEx, см. Правило 1. [RegEx может соответствовать только обычным языкам, а HTML не является обычным языком] (http://stackoverflow.com/a/590789/930393) – freefaller
Далее на комментарий @ freefaller и не делать этого с помощью регулярного выражения: вы уже используете jQuery, поэтому хорошим подходом было бы завершение 'content' и использование jQuery-функций для обработки этого:' $ (content) .find (....) 'и т. д. –
Почему вы не соответствуете тексту при создании ячеек? – epascarello