正则提取两个字符串之间的内容的问题

sctongyi 2011-02-21 08:30:28
需处理的如下内容
{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}

处理后要得到如下代码
<a href="/uploads/allimg/110219/1-110219142110.jpg" target="_blank"><img src="/uploads/allimg/110219/1-110219142110-lp.jpg" /></a><a href="/uploads/allimg/110219/1-110219142111.jpg" target="_blank"><img src="/uploads/allimg/110219/1-110219142111-lp.jpg" /></a>

谢谢大家
...全文
253 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sctongyi 2011-02-22
  • 打赏
  • 举报
回复
我把dede这样的字符改为de1de后 居然就可以,另外图片里可能有其他格式的图片,哪位给一个调用前5张,的代码,另外还要先把dede替换为de1de。大家帮帮忙,完了就结贴。
sctongyi 2011-02-22
  • 打赏
  • 举报
回复
似乎放到dedecms里还是不行,哪位朋友有dede的可以试下 放到他的模板下面看看能否运行,先谢谢楼上几位了
sctongyi 2011-02-22
  • 打赏
  • 举报
回复
好像还是因为dede 这个要怎么解决啊
prototyper 2011-02-22
  • 打赏
  • 举报
回复

<script>
var Str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";

String.prototype.getImage = function(num) {
var i = 0, str = "", num = num || 10000000000000,
reg = /([\w*\/]{1,}[^'"]+)['"][^\/]*?([\w*\/]{1,}[^\/]+)\s\{/g;
this.replace(/(\{dede:)/gi, "{de1de:").replace(reg, function($1,$2,$3) {
i ++ < num && (str += '<a href="' + $3 + '" target="_blank"><img src="' + $2 + '"/></a>');
})
return str
}

alert(Str.getImage(1)); // 调用前1张
alert(Str.getImage(5)); // 调用前5张
alert(Str.getImage(8)); // 调用前8张
alert(Str.getImage()); // 调用全部图
</script>


BTW:“dede”是dedecms的关键保留词?给你替换了,是否管用不得而知,这与正则本身没有任何关系。
Linares 2011-02-22
  • 打赏
  • 举报
回复
前5张。。。一个很基本for循环计数。。。
var str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";
var reg = /\{dede:img ddimg='([^']*)'[^}]*\}\s*([^{\s]*)\s*\{\/dede:img\}/gi;
var txt = "";
for (var i=0; i<5 && reg.test(str); i++)
{
txt += '<a href="'+RegExp.$2+'" target="_blank"><img src="'+RegExp.$1+'" /></a>';
}
alert(txt)
prototyper 2011-02-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sctongyi 的回复:]

Character postion 752, 'img' Error!出来的是这个是什么意思
[/Quote]
是说你代码的第752个位置的字符 'img'错误,与正则表达式无关,因为匹配模式里面唯一的标识符只用了“jpg”,使用firebug调试定下位就知道怎么回事了。或许是因为前面帖子的字符串显示出来出现了断点。
还是封装下变量的好:


<script>
var Str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";

String.prototype.getImage = function(num) {
var i = 0, str = "", num = num || 10000000000000;
this.replace(/([\w*\/]{1,}[^\/]+jpg)[\S\s]*?([\w*\/]{1,}[^\/]+jpg)/gi, function($1,$2,$3) {
i ++ < num && (str += '<a href="' + $3 + '" target="_blank"><img src="' + $2 + '"/></a>');
})
return str
}
alert(Str.getImage())
</script>
prototyper 2011-02-21
  • 打赏
  • 举报
回复
只显示前5幅:


<script>
var Str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img} {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";


var i = 0, str = "";
Str.replace(/([\w*\/]{1,}[^\/]+jpg)[\S\s]*?([\w*\/]{1,}[^\/]+jpg)/gi, function($1,$2,$3) {
i ++ < 5 && (str += '<a href="' + $3 + '" target="_blank"><img src="' + $2 + '"/></a>');
});
alert(str)
</script>
sctongyi 2011-02-21
  • 打赏
  • 举报
回复
Character postion 752, 'img' Error!出来的是这个是什么意思
prototyper 2011-02-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sctongyi 的回复:]

郁闷放到dedecms的模板里 居然不能运行,我就是想用dedecms的sql标签把图集里的图片读取出来,太麻烦了
[/Quote]

哦,你试试下面单独匹配图片地址的看看,不一定行。


<script>
var Str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg'

text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44'

width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";


var str = "";
Str.replace(/([\w*\/]{1,}[^\/]+jpg)[\S\s]*?([\w*\/]{1,}[^\/]+jpg)/gi, function($1,$2,$3) {
str += '<a href="' + $3 + '" target="_blank"><img src="' + $2 + '"/></a>';
});
alert(str)
</script>
sctongyi 2011-02-21
  • 打赏
  • 举报
回复
郁闷放到dedecms的模板里 居然不能运行,我就是想用dedecms的sql标签把图集里的图片读取出来,太麻烦了
sctongyi 2011-02-21
  • 打赏
  • 举报
回复
对了 现在我如果里面是有10副图 但我只想显示前面的5副应该怎么写的
sctongyi 2011-02-21
  • 打赏
  • 举报
回复
谢谢这位朋友,好像是可以,不过你发了几个那个更好些 更容易理解呢 可以注释下吗 本人比较菜
Linares 2011-02-21
  • 打赏
  • 举报
回复
// or --> while / test
var str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";
var reg = /\{dede:img ddimg='([^']*)'[^}]*\}\s*([^{\s]*)\s*\{\/dede:img\}/gi;
var txt = "";
while(reg.test(str)){txt += '<a href="'+RegExp.$2+'" target="_blank"><img src="'+RegExp.$1+'" /></a>';}
prompt('',txt)
Linares 2011-02-21
  • 打赏
  • 举报
回复
var str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";
str = str.replace(/\{dede:(?!img)[^}]*}/gi, '');
str = str.replace(/\{dede:img ddimg='([^']*)'[^}]*\}\s*([^{\s]*)\s*\{\/dede:img\}/gi, '<a href="$2" target="_blank"><img src="$1" /></a>');
prompt('',str);
Linares 2011-02-21
  • 打赏
  • 举报
回复
[code=JScriptt]var str = "{dede:pagestyle maxwidth='800' pagepicnum='12' ddmaxwidth='200' row='3' col='4' value='3'/}{dede:img ddimg='/uploads/allimg/110219/1-110219142110-lp.jpg' text='333' width='150' height='150'} /uploads/allimg/110219/1-110219142110.jpg {/dede:img}{dede:img ddimg='/uploads/allimg/110219/1-110219142111-lp.jpg' text='44' width='150' height='150'} /uploads/allimg/110219/1-110219142111.jpg {/dede:img}";
str = str.replace(/\{dede:(?!img)[^}]*}/gi, '');
str = str.replace(/\{dede:img ddimg='([^']*)'[^}]*\}\s*([^{\s]*)\s*\{\/dede:img\}/gi, '<a href="$2" target="_blank"><img src="$1" /></a>');
prompt('',str);
[/code]

87,997

社区成员

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

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