匹配出现在表格单元格中行首的单词

时间:2014-05-24 05:07:30

标签: javascript jquery regex

请看一下 FIDDLE 。您如何确保它仅匹配表格单元格中行的开头出现的Sodium,例如:

<td>Sodium</td><td>Sodium (from Kitchen Salt)</td>

但不是

<td>Vitamin sodium</td><td>Fish Sodium</td>

我的尝试

`var find_Sodium = /^Sodium/ 
 alert($('.'+title+'table').find('td:contains(find_Sodium)').next().html());` 

无效。

$.ajax({
    url: "url.json",
    success: function (data) {

        $(data.query.results.json.json).each(function (index, item) {     

            var title = item.title;
            var table = item.table; 
            if (table.indexOf("Sodium") >= 0) {

              $('.'+ title+'table').html(''+table+'');
              var find_Sodium = /^Sodium/;
              alert($('.'+title+'table').find('td:contains(find_Sodium)').next().html());

            }
        });
    },
    error: function () {}
});

表格结构:

<table class="tablesorter">
<thead>
<tr>
<td>Ingredient</td>
<td>Amount</td>
<td>% Daily Value**</td>
</tr>
</thead>
<tbody>
<tr>
<td>Calories</td>
<td>10</td>
<td></td>
</tr>
<tr>
<td>Sodium</td>
<td>2g</td>
<td>&lt;1</td>
</tr>
<tr>
<td>Vitamin C</td>
<td>110mg</td>
<td>4</td>
</tr>
<tr>
<td>Potassium sodium</td>
<td>235mg</td>
<td>6</td>
</tr>
<tr>
<td>Omega 6</td>
<td>1100mg</td>
<td>*</td>
</tr>
<tr>
<td>Vitamin Sodium</td>
<td>1200mg</td>
<td>*</td>
</tr>
<tr>
<td>Vitamin E</td>
<td>300mg</td>
<td>*</td>
</tr>
</tbody>
</table>

1 个答案:

答案 0 :(得分:1)

:contains不接受正则表达式,执行此操作的方法是filter()

$('.'+title+'table').find('td').filter(function() {
    return $(this).text().indexOf('Sodium') === 0;
}).next().html();

FIDDLE

使用indexOf === 0确保Sodium的索引为零,这是元素文本中首先发生的事情