<p>假如网页上有一个表格,你需要获取表格中指定单元格的值,你会怎么做?</p>

使用DOM,那将是非常方便的。问题是,在某些情况下,DOM不可用,比如,在有些时候,你得到的仅仅是这个表格的HTML源代码,一串字符而已,没有结构化的信息。这时求助DOM,恐怕就无济于事了。

那么利用正则表达式,来解决这个问题吧。设想自己写个函数来专门完成对表格HTML的分析,传递给它这个表格的HTML源码,以及指定行数i,列数j,那么它就返回位于这个表格的第i行第j列的值。

它是怎么做到的呢。第一步,它先从整个表格HTML(如<table><tr><td>第0行第0列</td></tr><tr><td>第1行第0列</td></tr></table>)中,取得第i行的HTML(如<tr><td>第1行第0列</td></tr>),接着,从第i行的HTML中,取得第j列的HTML(如<td>第1行第0列</td>),最后,去掉HTML标签,得到最终的值(如 第1行第0列)。

按照这个思路,写好代码,就解决了这个问题。

以下是第一步的代码,从表格HTML中,取得指定的行的HTML。

/* 取得指定行的HTML */
function getRow(tableHTML, i) {
	var re = /<tr[^>]*?>(.*?)<\/tr>/g;	
	var m = tableHTML.match(re);
	return m[i];
}

点击这里运行