Js正则匹配标签内容
有好多个 span标签 如:
<span style=""> 1</span>
<span style=""> 1 2</span>
要求用正则 把 每个 span标签里面的内容前面的 多个空格 替换掉 一个空格,如下,2前面的空格不变。
<span style="color: #0;"> 1</span>
<span style="color: #0;"> 1 2</span>
谢谢!
------解决方案--------------------s= s.replace(/^\s*/," ");
获取span的内容,执行上面的replace,再重新给span赋值?
------解决方案--------------------var ele = document.getElementById("aa"),
htm = ele.innerHTML;
htm = htm.replace(/\<span\s?[^\>]*\>(?:(\s*)[^\s]+)\<\/span\>/g,function($1,$2){
console.log($1);
console.log($2)
return $1.replace($2," ");
});
console.log(htm);
ele.innerHTML = htm;
试试,这样可以把id=aa下的所有子元素的span进行处理,不过也是得要重新赋值的
------解决方案--------------------html.replace(/^[\s\uFEFF\xA0]+
------解决方案--------------------[\s\uFEFF\xA0]+$/g," ");
------解决方案--------------------你给一下你匹配不到的html的代码结构呗,我们也可以测试测试。
是不是你有的span标签还有子标签?
------解决方案--------------------如果是在浏览器上就不需要,整个网页用正则匹配。
浏览器都用缓存把每个dom element都存起来的,何苦?
var $l = document.getElementsByTagName('span');
var i=0;
for(;$l[i];i++){
var $1 = $l[i].innerHTML;
var $2 = $1.replace(/^\s(\s)+/,' ');
$l[i].innerHTML = $2;
}
------解决方案--------------------html.replace(/(<span[^>]*>)[\s\uFEFF\xA0]+(.*)(\<\/span>)/g,"$1 $2$3")