我想替换源码中的一些字符,
一,不替换<........>里的字符
二,不替换<a...>....</a>或者<A......>.......</A>里的字符
试了半天都不能,要不全替换,要不一个不换比如以下这段代码:
-------------------------------
我们都是中国人,我家我们<a href=我们都是中国人 target=_blank>我们都是中国人</a>我们都有一个家<img src=http://ww.aa.bb alt=我们都有一个家 />我们中国中国我们
-----------------------------------------如果把"我们"换成"咱们",该如何换?标签内的不换,链接里的也不换
只换红色部分的,这个正则表达式该如何写?
一,不替换<........>里的字符
二,不替换<a...>....</a>或者<A......>.......</A>里的字符
试了半天都不能,要不全替换,要不一个不换比如以下这段代码:
-------------------------------
我们都是中国人,我家我们<a href=我们都是中国人 target=_blank>我们都是中国人</a>我们都有一个家<img src=http://ww.aa.bb alt=我们都有一个家 />我们中国中国我们
-----------------------------------------如果把"我们"换成"咱们",该如何换?标签内的不换,链接里的也不换
只换红色部分的,这个正则表达式该如何写?
解决方案 »
- 高手看看,这段js代码怎么有错误执行不起
- javascript 跟java间通信
- 求教如何锁定页面滚动条
- 困扰我的恶魔问题啊!!求助!为什么在我点击弹出对话框之后,下拉菜单所选由20变成5了呢?
- JavaScript如何为所有相同的控件添加相同的事件?
- 一段代码怎么调也不行郁闷,请朋友们指点一下
- 如何判断用户是否直接在IE地址栏里输入链接查看的javascript
- 关于 window.open的问题???????????!!!!!!!!!!
- javascript 表单 是否填写HELP
- 长字符串,可能有回车,怎么办
- 请问js中.能否获取和设置浏览器对话框的值??有心人看哈.没分了!
- 求JS函数。找出字符串中的外链图片地址,并处理
var str="我们都是中国人,我家我们 <a href=我们都是中国人 target=_blank >我们都是中国人 </a >我们都有一个家 <img src=http://ww.aa.bb alt=我们都有一个家 / >我们中国中国我们"
var re=/((<a[^>]*>[\s\S]*?<\/a\s*>)|((<(?!(a|\/a)))[^>]*>))/ig
var result=str.match(re)
alert(result?result.join(""):"")
</script>
String.prototype.noHTMLReplace = function () {
var a = arguments
, k = a[0].replace(/([\|\\\+\*\.\(\)\/\[\]\?])/g, "\\$1")
, r = new RegExp('(<(?:"[^"]*"|\'[^\']*\'|[^\'">]+)+>)|' + k, a[2]);
return this.replace(r, function (i, b) {
return b || a[1];
});
};var str = "我们都是中国人,我家我们 <a href=我们都是中国人 target=_blank>我们都是中国人 </a>我们都有一个家 <img src='http://ww.aa.bb' alt=我们都有一个家 />我们中国中国我们"
alert(str.noHTMLReplace("我们", "咱们", "gi"));
</script>如果只要在标记里的话,那就便利标记就可以了。。用一个式子搞不定那个因为标记有嵌套,貌似很醒目的飘过。。
<!--var str = '我们都是中国人,我家我们 <a href=我们都是中国人 target=_blank >我们都是中国人 </a >我们都有一个家 <img src= "http://ww.aa.bb " alt=我们都有一个家 / >我们中国中国我们';
var i=0;
var k=0;
var arlnks = str.match(/<a[^<]*?>[\s\S]*?<\/a\s*>/gi);
var tmp = str.replace(/<a[^<]*?>[\s\S]*?<\/a\s*>/gi,function(){ return "#"+ (i++) + "#"; });var artags = str.match(/<[^<]+?>/gi);
tmp = tmp.replace(/<[^<]+?>/g,function(){ return "@"+ k++ + "@"; });
tmp = tmp.replace(/我们/g,function(){ return "we"; });
for(var j=0;j<k;j++){
tmp = tmp.replace(new RegExp("@"+ j + "@"),artags[j]);
}
for(var j=0;j<i;j++){
tmp = tmp.replace(new RegExp("#"+ j + "#"),arlnks[j]);
}
alert(tmp);
//-->
</script>
String.prototype.noHTMLReplace = function () {
/*
第一个参数是要替换的内容
第二个参数是替换成的内容
第三个参数是设置替换多个和是否忽略大小写即:i(忽略大小写), g(替换多个)
第四个参数是是否替换标记包含的关键字 Boolean
*/
var a = arguments, i = 0
, html = /^<(?:img|br|hr)/i //特殊标记
, k = a[0].replace(/([\|\\\+\*\.\(\)\/\[\]\?])/g, "\\$1") //替换特殊字符
, r = new RegExp('(<(?:"[^"]*"|\'[^\']*\'|[^\'">]+)+>)|' + k, a[2]) //匹配所有标记
, f = function (input, b) {
if (a[3] && b && !html.test(b)) i += (b.indexOf("<\/") == 0 ? -1 : 1); //设置层
return (i > 0 && input) || b || a[1];
};
return this.replace(r, f);
};var str = '我们都是中国人,我家我们 <a href=我们都是中国人 target=_blank >我们都是中国人 </a >我们都有一个家 <img src= "http://ww.aa.bb " alt=我们都有一个家 / >我们中国中国我们';
alert(str.noHTMLReplace("我们", "咱们", "gi", true));
alert(str.noHTMLReplace("我们", "咱们", "gi"));
</script>