我正在使用jQuery对一列电子邮件进行排序,虽然它们是用js中的base64编码的...所以我需要一个正则表达式命令来忽略<script>.*?<script>
标签并且只对它们之后的内容进行排序(在<noscript>
代码)。
专栏HTML
<td>
<script type="text/javascript">
document.write(Base64.decode('PG5vYnI+PGEgaHJlZj0ibWFpbHRvOmJpY2VAdWNzYy5lZHUiIHRpdGxlPSJiaWNlQHVjc2MuZWR1Ij5iaWNlPC9hPjwvbm9icj48YnIgLz4K'));
</script>
<noscript>username</noscript>
</td>
需要一些爱的正则表达
a.replace(/<script.*?<\/script>(.*?)/i,"$1");
答案 0 :(得分:2)
假设html的结构没有改变,你可以使用:
$(a).contents().filter(function(){
return this.nodeType === 3
}).eq(1).text();
它获取所有文本节点,然后过滤到索引1处的文本节点并获取它的文本值。
如果你想坚持使用正则表达式,那么这就是:
a.replace(/(<script type="text\/javascript">[^>]+>|<noscript>.*<\/noscript>)/ig,"");
答案 1 :(得分:0)
我知道这不是你所要求的(虽然我有点困惑你要求的,说实话......),但是你看过使用document.getElementsByTagName('noscript')
?此函数应返回一个数组,其第一个元素将是您的noscript
元素。
另外,我对你解决这个问题的整体方法并不十分清楚,但似乎你误解了noscript
元素的目的。 noscript
个元素仅在浏览器不支持Javascript时执行,这意味着向用户显示的唯一noscript
个内容是当您用于修改noscript
的Javascript时内容不会运行。
也许你可以澄清你到底想要做什么?