【发布时间】:2013-02-16 22:45:50
【问题描述】:
正则表达式的斗争......
我正在使用它来查找某些元素之间的 HTML 字符串:
for (i = 0; i < 2; i += 1) {
target = block[i]; // like BODY or HEAD
regex = RegExp('<' + target + '>(.)+</' + target + '>');
// in case string passed includes breaks/spaces
data = data.replace(/(\r\n|\n|\r)/gm,"").replace(/\s+/g," ")
.match(regex);
entry = data[0].replace(/<!-- [\s\S]*? -->/g, '');
console.log(entry);
}
虽然这可以正常工作,但它会返回如下内容:
<head>....everthing I want ....</head>
问题:
我需要如何修改正则表达式,以便我仍然可以指定我需要其内容的元素,但它只返回内容而不返回内容和令牌(如<head></head>)。
谢谢!
【问题讨论】:
-
使用 Ambers 解决方案并移动括号以包含
+像这样'<' + target + '>(.+)</' + target + '>' -
$(target).each(function(){ console.log($(this).html()); })除了评论节点还有什么问题吗? -
@FabrícioMatté:实际上没有。我有一些模板,其中 cmets ,但这个没有,所以也试试这个。
-
当然,空格仍然必须用正则表达式折叠,注释节点可以用
contents().filter()或正则表达式删除,但是是的,我仍然不确定你想要实现什么。 -
@Fabricio:我正在开发一个插件,它可以引入 sn-ps 代码,我更喜欢它是 sn-ps,但它是(未压缩的)HTML 页面(想想一个页面有一个按钮)。我必须提取要使用的 sn-p 页面的点点滴滴,因为我无法按原样附加完整的 sn-p。因此,我创建了正则表达式来过滤脚本/css,我将其附加到页面头部,以及正文中的内容(例如,独奏按钮),进入页面。我用 Ambers 的回答解决了这个问题,所以我是一个快乐的露营者。谢谢!
标签: javascript jquery regex string token