Javascript 正则表达式在模式化数据范围中查找匹配项?

Javascript 正则表达式在模式化数据范围中查找匹配项?,javascript,filter,Javascript,Filter,我有一个表,有3列(联系人、部门、电话),每个部门单元都包含大量数据,范围如下:(精确格式,不带引号) “10031005-29/36/38/494587-993301/21501239900-04/10-14/20/30/41-44” 有没有办法在网页中添加一个过滤器(文本框)以便快速查找 例如,如果我键入“9912”-->它将找到字符串:“9900-04/10-14/20/30/41-44”并高亮显示 注意:我无法控制表格(该列或整个表格没有id/class),搜索整个网页就可以了,其他地方

我有一个表,有3列(联系人、部门、电话),每个部门单元都包含大量数据,范围如下:(精确格式,不带引号)

“10031005-29/36/38/494587-993301/21501239900-04/10-14/20/30/41-44”

有没有办法在网页中添加一个过滤器(文本框)以便快速查找

例如,如果我键入“9912”-->它将找到字符串:“9900-04/10-14/20/30/41-44”并高亮显示

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


有人能给我指出一个好的方向吗?jQuery?

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

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");
        }
    }
});
var-dataCache={};
$(用于收集所有字符串的选择器)。每个(函数(){
var string=$(this.html();
var matches=yourParserWhichReturnsAnarrayFintegers(字符串);

对于(var i=0,il=matches.length;i“例如,如果我键入“9912”-->它将找到字符串:“9900-04/10-14/20/30/41-44”并突出显示它。“我仍然不明白您是如何试图找到数据的,您能否更具体一点,让我知道您尝试搜索的依据是什么。@D.Bugger抱歉,20之前不应该有空格。”(我更正了它)“9900-04/10-14/20/30/41-44”的意思是:990099019902990990499109911991299129913991499209030994199429943和9944。棘手的是,我所有的数据都是用这种缩短格式写的(因为它们很多)。然而,用户总是会搜索一个唯一的扇区号(用户输入中没有regex)我想如果你想形成一个正则表达式,你可以看看这个在线工具,它非常全面,应该可以工作。RegardsWhat是指将表放在与DOM相同的位置?抱歉,我不太熟悉这个。那么如果没有正则表达式,我应该使用什么方法?感谢DOM是文档对象模型,是javasc所使用的cript用于访问网页上的元素。例如,如果您的数据表始终是网页中的第三个表,则可以将其作为文档进行访问。getElementsByTagName(“表”)[2]。但是,如果表的位置发生变化,那么您将需要另一种方法来获取它。感谢您的解释,所以现在我只需要找到一种方法,将所有shorten数据解析为唯一数据,并将它们存储在int数组中。哇,这对我来说可能会很复杂,哈哈~会的。我的建议是先去掉“/”语法,如果可以的话;如果您将自己限制为整数和用“-”表示的范围,这将容易得多