大家帮我看看这个正则表达式

jianjialin 2011-05-23 11:03:03
有一个这样的table

<table id="tb">
<thead>
<tr class="tb_head2">
<td title="日期" format>
<a id="a_" onclick="orderby('shordate',this)" href="#">日期</a>
</td>
<td id="td" title="用户数量" format="qianfenshu">
<a onclick="orderby('UserCount',this)" href="#">用户数量</a>
</td>
<td title="有效用户数" format="qianfenshu">
<a onclick="orderby('LiveUserCount',this)" href="#">有效用户数</a>
</td>
</tr>
</thead>
</table>

我期望把
<a id="a_" onclick="orderby('shordate',this)" href="#">日期</a>
过滤成 日期
就去去掉超链接.

我写的代码

var tb = document.getElementById('tb');
var src = tb.innerHTML;
var re = /<a[^>]*?>([\w\W]+)<\/a>/gi; // 创建正则表达式模式。

src = src.replace(re, '$1');
tb.innerHTML = src;

请问哪错了. 应该怎么写这个替换呢?
...全文
163 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianjialin 2011-05-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 q107770540 的回复:]
HTML code

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>

</head>
<body>

<table id="tb">
<thead>
<tr class="tb_head2">
<td title="日期" >
……
[/Quote]
嗯, 谢谢了. 后来我也发现是小括号 $1的取值有问题.
原先的innerHTML也发现在IE下不行, 本打算用$().html(src)来解决.
又多明白了一些, 感谢你这样授人以渔的方式~ 祝工作愉快.
prototyper 2011-05-23
  • 打赏
  • 举报
回复
是过滤掉该TAB中全部超链接,还是只过滤第一个?提问不清楚,就先给你全部的吧。

<table id="tb">
<thead>
<tr class="tb_head2">
<td title="日期" format>
<a id="a_" onclick="orderby('shordate',this)" href="#">日期</a>
</td>
<td id="td" title="用户数量" format="qianfenshu">
<a onclick="orderby('UserCount',this)" href="#">用户数量</a>
</td>
<td title="有效用户数" format="qianfenshu">
<a onclick="orderby('LiveUserCount',this)" href="#">有效用户数</a>
</td>
</tr>
</thead>
</table>

<script>

var str = document.getElementById("tb").innerHTML;

alert(str.replace(/<\/?a[^>]*>/gi, ""));

</script>
q107770540 2011-05-23
  • 打赏
  • 举报
回复

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>

</head>
<body>

<table id="tb">
<thead>
<tr class="tb_head2">
<td title="日期" >
<a id="a_" onclick="orderby('shordate',this)" href="#">日期</a>
</td>
<td id="td" title="用户数量" >
<a onclick="orderby('UserCount',this)" href="#">用户数量</a>
</td>
<td title="有效用户数" >
<a onclick="orderby('LiveUserCount',this)" href="#">有效用户数</a>
</td>
</tr>
</thead>
</table>
<script type="text/javascript">

var tb = document.getElementById('tb');
var src = tb.innerHTML;
alert(src);
var re = /<a[^>]*>([^<>]+)<\/a>/gi; // 创建正则表达式模式。

src = src.replace(re, '$1');
alert(src);
tb.outerHTML = src; //用OUTERHTML 试试


</script>
</body>
</html>

q107770540 2011-05-23
  • 打赏
  • 举报
回复
innerHTML还没有一个通用标准,而在IE下innerHTML对于标签为COL, COLGROUP, FRAMESET, HTML, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR的元素是只读的。要想在IE下动态修改表格,只能使用insertRow和insertCell;
http://zhiqiang.org/blog/it/innerhtml-2-cd-issue-dynamic-modification-table-function-of-js.html

q107770540 2011-05-23
  • 打赏
  • 举报
回复
Try:

var re = /<a[^>]*>([^<>]+)<\/a>/gi; // 创建正则表达式模式。
jianjialin 2011-05-23
  • 打赏
  • 举报
回复
不行呀. 我就纳了闷了.
如果


"<a id=\"a_\" onclick=\"orderby('shordate',this)\" href=\"#\">日期</a>".replace(/<a[^>]*?>([\w\W]+)<\/a>/gi,'$1')

没问题.
但是如果把那个TABLE的innerhtml做替换的时候, 就不行了.
王集鹄 2011-05-23
  • 打赏
  • 举报
回复
试试:
/<a(?=.*shordate)[^>]*?>([\w\W]+?)<\/a>/gi
jianjialin 2011-05-23
  • 打赏
  • 举报
回复
顶一下.

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧