JS正则替换字符

bing475879749 2011-03-16 10:59:53

<a href="1">dsrfewfdsf</a>
<a href="2">dsfdsf</a>
<a href="3">dsfdsafef</a>
<a href="4">dsfdfdssf</a>


a标签个数不定,把最后一个a标签替换掉

替换后为

<a href="1">dsrfewfdsf</a>
<a href="2">dsfdsf</a>
<a href="3">dsfdsafef</a>
...全文
246 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
bing475879749 2011-03-19
  • 打赏
  • 举报
回复
呵呵,用DOM做简单多了,原来v:shape是可以当作item取得
sohighthesky 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hnxxwyq 的回复:]
借用楼上的代码 呵呵


JScript code


<script type="text/javascript">
var b = '<v:shape style="1">111111<v:fill></v:fill></v:shape>\n<v:shape style="2">222222<v:fill></v:fill></v:shape>\n<v:shape style="3">……
[/Quote]开始就想到用前瞻的,结果把那个写反了,没写出来,。。。。。
sohighthesky 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 danica7773 的回复:]
顺便问一下LS的LS, console.log这个是撒?
[/Quote]
打印日志信息
,firefox开firebug或者IE8打开开发人员工具,再或者Chrome可用,
除IE外,可以打印各种复杂对象 ,跟php的var_dump类似
lazyboy_wu 2011-03-17
  • 打赏
  • 举报
回复

借用楼上的代码 呵呵




<script type="text/javascript">
var b = '<v:shape style="1">111111<v:fill></v:fill></v:shape>\n<v:shape style="2">222222<v:fill></v:fill></v:shape>\n<v:shape style="3">333333<v:fill></v:fill></v:shape>\n<v:shape style="4">444444<v:fill></v:fill></v:shape>';
String.prototype.r = function(key) {
// var reg = /(?=<v:shape).*?<\/v:shape>((?:.|\s)(?!<v:shape))?$/i;
var reg = new RegExp('(?=<' + key + ').*?<\/' + key + '>((?:.|\s)(?!<' + key + '))?$', 'i');
return this.replace(reg, '$1');
}
console.log(b.r('v:shape'));
</script>
打字员 2011-03-17
  • 打赏
  • 举报
回复
再发一个,这个比较靠谱。。。


var b = '<v:shape style="1">111111<v:fill></v:fill></v:shape>\n<v:shape style="2">222222<v:fill></v:fill></v:shape>\n<v:shape style="3">333333<v:fill></v:fill></v:shape>\n<v:shape style="4">444444<v:fill></v:fill></v:shape>';
String.prototype.r = function(key) {
var reg = new RegExp('<(' + key + ')[^>]*>.*?<\\/\\1>', 'img');
return this.replace(reg, function(v) {
return (RegExp.rightContext.match(reg) == null)? '' : v;
});
}
alert(b.r('v:shape'));


顺便问一下LS的LS, console.log这个是撒?
bing475879749 2011-03-16
  • 打赏
  • 举报
回复
我的是这样的

<v:shape style="1">111111<v:fill></v:fill></v:shape>
<v:shape style="2">222222<v:fill></v:fill></v:shape>
<v:shape style="3">333333<v:fill></v:fill></v:shape>
<v:shape style="4">444444<v:fill></v:fill></v:shape>
rainsilence 2011-03-16
  • 打赏
  • 举报
回复
为什么不用dom来做?简单多了。。。

挨踢直男 2011-03-16
  • 打赏
  • 举报
回复
<div id="div">
<a href="1">dsrfewfdsf</a>
<a href="2">dsfdsf</a>
<a href="3">dsfdsafef</a>
<a href="4">dsfdfdssf</a>
</div>
<script language="javascript">

var html = document.getElementById("div").innerHTML;
var regex = /<[^\/]*?>\w*<\/[^<]*>[\s]*$/;
html = html.replace(regex,"");
alert(html)
</script>
sohighthesky 2011-03-16
  • 打赏
  • 举报
回复
上面那个里面的应该在\n后加个?号
改成<v:shape>的话
html = '<v:shape style="1">111111<v:fill></v:fill></v:shape>\n<v:shape style="2">222222<v:fill></v:fill></v:shape>\n<v:shape style="3">333333<v:fill></v:fill></v:shape>\n<v:shape style="4">444444<v:fill></v:fill></v:shape>asdfsadf';
var regstr = "<v:shape[^>]+>.*?</v:shape>\\n?",
reg1 = new RegExp("("+ regstr + ")+", "g"),
reg2 = new RegExp(regstr + "$");
html = html.replace(reg1, function($){
return $.replace(reg2, "");
})
console.log(html)

sohighthesky 2011-03-16
  • 打赏
  • 举报
回复

<div id ="layer1">
<a href="1">dsrfewfdsf</a>
<a href="2">dsfdsf</a>
<a href="3">dsfdsafef</a>
<a href="4">dsfdfdssf</a>
asdfasdf
</div>
<script>
var html = document.getElementById("layer1").innerHTML,
reg = /(<a[^>]+>.*?<\/a>\n?)+/g;
html = html.replace(reg, function($, $1){
//reg.lastIndex -= $1.length
console.log(arguments)
return $.replace(/<a[^>]+>.*?<\/a>\n$/g,"");
});
console.log(html)
</script>
打字员 2011-03-16
  • 打赏
  • 举报
回复
正则太水了,发个拙法子挣点分...


var s = '<v:shape style="1">111111<v:fill></v:fill></v:shape>\n<v:shape style="2">222222<v:fill></v:fill></v:shape>\n<v:shape style="3">333333<v:fill></v:fill></v:shape>\n<v:shape style="4">444444<v:fill></v:fill></v:shape>';
String.prototype.removeLastOne = function(key) {
var i = j = 0;
var reg = new RegExp('<(' + key + ').*?>[.\n]*?<\\/\\1>', 'gim');
return this.replace(reg, function(v) {
i++;
return v;
}).replace(reg, function(v) {
j++;
return (j == i)? '' : v;
});
}
alert(s.removeLastOne('v:shape'));
liangtiana 2011-03-16
  • 打赏
  • 举报
回复
用dom来做啊,简单多了

87,907

社区成员

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

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