正则表达式在图案数据范围内找到匹配?

时间:2012-01-26 13:35:25

标签: javascript filter

我有一个包含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”并突出显示它。

注意:我无法控制表格(该列或整个表格没有ID /类),搜索整个网页就可以了,其他地方没有重复信息。

有人能指出我的方向吗? jQuery的?

2 个答案:

答案 0 :(得分:0)

如果表每次都出现在DOM中的相同位置,那么您仍然可以获取数据。如果是这种情况,我认为你将不得不搜索扩展数字。用于搜索压缩数字格式的正则表达式可能非常复杂。不要忘记在页面上保留对原始数据的引用,以便在找到匹配项时突出显示它。

答案 1 :(得分:0)

jQuery将帮助您处理文本框的交互,但是为了处理字符串和提取数据(即它们匹配的整数),您将需要一些繁重的处理(使用正则表达式,String.indexOf()和一些循环) 。最好在页面加载时对所有这些处理进行处理并将结果缓存到某处,但是根据要处理的字符串数量,这可能会暂停用户界面一段时间,但假设这不是' ta问题那么代码有点像这样可以突出正确的结果

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");
        }
    }
});