Javascript 获取表数据之间带有空格的表行文本

Javascript 获取表数据之间带有空格的表行文本,javascript,jquery,html,regex,html-table,Javascript,Jquery,Html,Regex,Html Table,我有一个html表,我正试图为它构建一个搜索函数。我的正则表达式应该可以找到任何表行,这些表行中的单词以搜索栏中的文本开头 我相信正则表达式是正确的,但是我发现问题实际上在tr.text()部分。使用.text()将tr中每个td的文本混合在一起。这将阻止对每一列进行“单词开头”搜索,并且只对后跟空格的单词有效 现在我意识到解决这个问题最简单的方法是通过标记插入一个空格。但恐怕这会改变桌子的布局 有没有一种方法可以获取tr的文本,但可以将子td的文本分开(最好是用空格) 编辑:下面是我的困境代码

我有一个html表,我正试图为它构建一个搜索函数。我的正则表达式应该可以找到任何表行,这些表行中的单词以搜索栏中的文本开头

我相信正则表达式是正确的,但是我发现问题实际上在tr.text()部分。使用.text()将tr中每个td的文本混合在一起。这将阻止对每一列进行“单词开头”搜索,并且只对后跟空格的单词有效

现在我意识到解决这个问题最简单的方法是通过标记插入一个空格。但恐怕这会改变桌子的布局

有没有一种方法可以获取tr的文本,但可以将子td的文本分开(最好是用空格)

编辑:下面是我的困境代码示例

HTML:

如果我输入console.log(文本),它会记录如下内容:

Column1 TextAColumn2TextAColumn3A
Column1 TextBColumn2TextBColumn3B
因此,如果搜索“Column1”(或从头到尾的任何字符)或“TextA”/“TextB”(或从开头到结尾的任何字符),我从“单词开头”开始的搜索(在某种程度上)才有效

重新编辑因此,我的问题是无法搜索Column2TextA或Column3A或Column3TextB或Column3B。因为.text()将它们混合在一起,因此不将它们视为正则表达式中\b正常工作的各自单词。

您可以在
td
上使用
。each()
,并添加空格:

var row = "";
console.log($("#tbl #row td").each(function(){
    row += " "+$(this).text();
}));

或者简单地循环使用每个
tr
td
,并在这些项目上使用正则表达式。在这种情况下,在
.each
中,您只需在
$(this).text()
上应用正则表达式,就可以在
td
上使用
.each()
,并添加空格:

var row = "";
console.log($("#tbl #row td").each(function(){
    row += " "+$(this).text();
}));

或者简单地循环使用每个
tr
td
,并在这些项目上使用正则表达式。在这种情况下,在
.each
中,您只需在
$(this).text()
上应用正则表达式,就可以在
td
上使用
.each()
,并添加空格:

var row = "";
console.log($("#tbl #row td").each(function(){
    row += " "+$(this).text();
}));

或者简单地循环使用每个
tr
td
,并在这些项目上使用正则表达式。在这种情况下,在
.each
中,您只需在
$(this).text()
上应用正则表达式,就可以在
td
上使用
.each()
,并添加空格:

var row = "";
console.log($("#tbl #row td").each(function(){
    row += " "+$(this).text();
}));


或者简单地循环使用每个
tr
td
,并在这些项目上使用正则表达式。在这种情况下,在
.each
中,您只需在
$(this).text()
上应用正则表达式,就可以根据RegExp测试选择每行的单元格并减少它们,然后返回长度结果的truthy/false值

如果没有与RegExp匹配的单元格,则其包含行将保留在结果中,否则将被删除

过滤完所有行后,它将隐藏其余行

var$rows=$('tr.searchable');
$('#search')。在('input',function()上{
$rows.show();
如果(!this.value)返回;
var reg=new RegExp('\\b'+this.value.replace(/\.@g',),'i');
$rows.filter(函数(){
return!$('td',this).filter(函数(){
return reg.test(this.textContent.replace(/\.@/g');
}).长度;
}).hide();
});

第1列文本
第2列文本
哥伦比亚3A
第1栏文本B
Column2TextB
哥伦比亚3B

您可以为每行选择单元格,并根据RegExp测试减少它们,然后返回长度结果的truthy/false值

如果没有与RegExp匹配的单元格,则其包含行将保留在结果中,否则将被删除

过滤完所有行后,它将隐藏其余行

var$rows=$('tr.searchable');
$('#search')。在('input',function()上{
$rows.show();
如果(!this.value)返回;
var reg=new RegExp('\\b'+this.value.replace(/\.@g',),'i');
$rows.filter(函数(){
return!$('td',this).filter(函数(){
return reg.test(this.textContent.replace(/\.@/g');
}).长度;
}).hide();
});

第1列文本
第2列文本
哥伦比亚3A
第1栏文本B
Column2TextB
哥伦比亚3B

您可以为每行选择单元格,并根据RegExp测试减少它们,然后返回长度结果的truthy/false值

如果没有与RegExp匹配的单元格,则其包含行将保留在结果中,否则将被删除

过滤完所有行后,它将隐藏其余行

var$rows=$('tr.searchable');
$('#search')。在('input',function()上{
$rows.show();
如果(!this.value)返回;
var reg=new RegExp('\\b'+this.value.replace(/\.@g',),'i');
$rows.filter(函数(){
return!$('td',this).filter(函数(){
return reg.test(this.textContent.replace(/\.@/g');
}).长度;
}).hide();
});

第1列文本
第2列文本
哥伦比亚3A
第1栏文本B
Column2TextB
哥伦比亚3B

您可以为每行选择单元格,并根据RegExp测试减少它们,然后返回长度结果的truthy/false值

如果没有与RegExp匹配的单元格,则其包含行将保留在结果中,否则将被删除

过滤完所有行后,它将隐藏其余行

var$rows=$('tr.searchable');
$('#search')。在('input',function()上{
$rows.show();
如果(!this.value)返回;
var reg=new RegExp('\\b'+this.value.replace(/\.@g',),'i');
$rows.filter(函数(){
return!$('td',this).filter(函数(){
return reg.test(this.textContent.replace(/\.@/g');
}).长度;
}).hide();
});