关于正则匹配所有出现的标签内容问题

留校_察看 2015-01-27 04:23:01

<html>
<head>this is head</head>
<body>
<a>this is a</a>
<span>this is span</span>
<p>this is p <p>
<i>this is i</i>
等等。。。。。
</html>

如何用正则来匹配呢?只要是出现了标签的,并且标签当中有英文或中文内容的都匹配出来,再依次将匹配到的元素push一个数组里面去。
...全文
206 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fgj007 2015-01-30
  • 打赏
  • 举报
回复

var str = "<html> <head>this is head</head> <body> <a>this is a</a> <span>this is span</span> <p>this is p <p> <i>this is i</i> 等等。。。。。 </body></html>";
var arr1 = str.split(/<[/a-z]+>/);
var arr2 = [];
for (var i in arr1) {
    arr1[i].trim() && arr2.push(arr1[i]);
}
张运领 2015-01-30
  • 打赏
  • 举报
回复
我觉得,这个还是使用遍历所有节点的方法来吧,可用分别遍历子节点,然后对子节点继续查找子节点,这样更方便一些 正则的话,如果有些内容不再标签内部,就会出问题的。
var reg = /\<\s*([^\>]+\s*\>)([^\<]*?)\<\/\s*\1/g,
	html = "<html><head>this is head</head><body><a>this is a</a><span>this is span</span><p>this is p </p><i>this is i</i>等等。。。。。</html>",
	arr = [];
	
html.replace(reg,function(p1,p2,p3){
	console.log(p1);
	console.log(p2);
	console.log(p3);
	arr.push(p3);
});
console.log(arr);
上面的正则,只能匹配出标签内部的,其他的,比如你代码中的“等等。。。”这样的没有被标签包围的,就无法匹配到。
var reg = /(?:\s*\<\s*[^\>]+\s*\>\s*)+/g,
	html = "<html><head>this is head</head><body><a>this is a</a><span>this is span</span><p>this is p </p><i>this is i</i>等等。。。。。</html>",
	arr = [];
	
arr = html.replace(reg,"<>").split("<>");
//把所有标签的集合,换成"<>",然后使用split分割
arr = arr.slice(1,arr.length-1);
//去除最初的两个孔数组

console.log(arr);
这种,正则,就会有些问题,就是如果结构换乱的话,可能会出问题。 当然,可以把所有的匹配出来。
slwsss 2015-01-28
  • 打赏
  • 举报
回复
用jquery+正则来做
留校_察看 2015-01-28
  • 打赏
  • 举报
回复
引用 楼主 zgxjj 的回复:

<html>
<head>this is head</head>
<body>
<a>this is a</a>
<span>this is span</span>
<p>this is p <p>
<i>this is i</i>
等等。。。。。
</html>
如何用正则来匹配呢?只要是出现了标签的,并且标签当中有英文或中文内容的都匹配出来,再依次将匹配到的元素push一个数组里面去。
怎么操作呢?
留校_察看 2015-01-28
  • 打赏
  • 举报
回复
不好弄啊。。。

87,910

社区成员

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

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