регулярное выражение, чтобы найти соответствие в шаблонном диапазоне данных? - PullRequest
0 голосов
/ 26 января 2012

У меня есть таблица с 3 столбцами (контактное лицо, сектор, номер телефона), каждая ячейка сектора будет содержать много номеров данных в диапазоне, например: (точный формат без кавычек)

"1003, 1005-29/36/38/49, 4587-99, 3301/21, 50123, 9900-04 / 10-14 / 20/30 / 41-44 "

Есть ли способ добавить фильтр (текстовое поле) на веб-страницу для быстрого просмотра?

Например, если я наберу "9912" -> он найдет строку: "9900-04 / 10-14 / 20/30 / 41-44 "и выделите его.

примечание: у меня нет контроля над таблицей (нет идентификатора / класса для этого столбца или всей таблицы), поиск по всей веб-странице будет в порядке, в другом месте нет дублирующейся информации.

Может ли кто-нибудь указать мне правильное направление?JQuery

Ответы [ 2 ]

0 голосов
/ 26 января 2012

jQuery поможет вам с взаимодействием для текстового поля, но для обработки строк и извлечения данных (то есть, какие целые числа они соответствуют) вам потребуется некоторая тяжелая обработка (с использованием регулярных выражений, String.indexOf () и некоторых циклов) , Вероятно, лучше всего выполнить всю эту обработку при загрузке страницы и где-то кешировать результаты, но в зависимости от того, сколько строк нужно обработать, это может на время заблокировать пользовательский интерфейс, но если предположить, что это не проблема, тогда кодируйте немного как это сделало бы работу по выделению правильных результатов

var dataCache = {};

$(selector to collect all your strings).each(function() {
    var string = $(this).html();
    var matches = yourParserWhichreturnsAnArrayOfIntegers(string);
    for(var i = 0, il = matches.length;i<il;i++) {
        if(dataCache[matches[i]]) {
            dataCache[matches[i]].push(this);    
        } else {
            dataCache[matches[i]] = [this];
        }
    }
});

$(yourtextbox).change(function() {
    $(selector to collect all your strings).removeClass("highlighted");
    var matches = dataCache[$(this).val()];
    if (matches) {
        for(var i=0,il=matches.length;i<il;i++){
            $(matches[i]).addClass("highlighted");
        }
    }
});
0 голосов
/ 26 января 2012

Если таблица появляется в одном и том же месте в DOM каждый раз, вы все равно можете получить данные. Если это так, я думаю, вам придется искать по расширенным номерам. Регулярное выражение для поиска в формате сжатых чисел, вероятно, будет очень сложным. Не забудьте сохранить ссылку на исходные данные на странице, чтобы вы могли выделить ее, если совпадение найдено.

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