日期:2014-05-20  浏览次数:20655 次

正则表达式高手来!!请教

这是图片前面的文字<img>http://....com</img>这是图片后面的文字,这是图片前面的文字<img>http://....com</img>这是图片后面的文字

我想达到的效果是:文字用文本显示,图片开始用一张默认的代替然后请求图片链接,请求成功后替换默认的。但是要按照顺序显示文字、图片,应该怎么做到呢??

求指点,谢谢!

------解决方案--------------------
<!DOCTYPE HTML>
<html>
<head>
<meta charset="gb2312" />
<title></title>
<style>
</style>
</head>
<body>
<script>
var str = '这是图片前面的文字<img>http://www.baidu.com/img/baidu_jgylogo3.gif</img>这是图片后面的文字,这是图片前面的文字<img>http://www.baidu.com/img/baidu_jgylogo3.gif</img>这是图片后面的文字';
var r1 = /[^,]+/g;
var r2 = /<img>(.+?)<\/img>/;
var arr = str.match(r1);
for( var i = 0, len = arr.length; i < len; i++ ){
var tmp = arr[i].replace(r2, '<img src="$1">');
var div = document.createElement('div');
div.innerHTML = tmp;
document.body.appendChild(div);
}
</script>
</body>
</html>


------解决方案--------------------
问题都木有看明白,这应该不是正则的问题

图片更新
<img id=xxx name=xxx src=默认图片 onclick=xxx>yyyy</img>
在onclick事件里修改src为新的图片就可以了

其他的按你现在处理保持不变
------解决方案--------------------
有正则表达式问题的地方 都会出现 阿宝的身影 ,继续关注
------解决方案--------------------
顶楼的需求跟5楼的说明不一致。

顶楼的需求相对简单,将<img>xxoo</img>这种片段,转换为一段带JS的HTML脚本即可,比如:
<img onload="loadImg(this, 'http://..../xxoo.jpg')" src="/img/default.jpg" />
然后写个loadImg的函数去负责异步下载图片好了。

至于用正则匹配出<img>xxoo</img>,这个难度貌似就更低了。
html = html.replaceAll("<img>([^<]+)</img>", "<img onload="loadImg(this, '$1')" src="/img/default.jpg" />");


至于5楼的需求,复杂度就比较高了。。。
------解决方案--------------------
探讨
我的意思是怎么把前面的文字找出来,图片链接找出来,图片后面的文字找出来??

这是图片前面的文字<img>http://....com</img>这是图片后面的文字

------解决方案--------------------
阿宝何方神圣啊?求拜师!!~
------解决方案--------------------
主要是[]是正则表达式的特殊字符,所以需要进行转义,其它并没啥特殊的:

String s = "测试字符串";
String pat = "\\[img\\]([^\\[]*)\\[/img\\]";
Matcher m = Pattern.compile(pat).matcher(s);
while (m.find()) {
System.out.println(m.group(1));
}
------解决方案--------------------
探讨
[img]http://www.baidu.com[/img] 怎么把中间的网址提取出来???正则