龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

javascript正则获取img标签alt值代码

时间:2012-12-29 08:41来源:未知 作者:admin 点击:
分享到:
文章一步步分享了关于怎么利用javascript中的正则表达式来正则到img标签的alt的值的问题,有需要的同学可以参考一下。 在Discuz!可视化编辑器和UBB编辑器之转换的时候,比如本来是 代码
文章一步步分享了关于怎么利用javascript中的正则表达式来正则到img标签的alt的值的问题,有需要的同学可以参考一下。

在Discuz!可视化编辑器和UBB编辑器之转换的时候,比如本来是

 代码如下
<img src="http://www.hzhuti.com /templets/zhuti/img/logo1.jpg" border="0" alt="头像"/>

但是IE给的内容是

 代码如下

<img alt=头像 src="http://www.hzhuti.com /templets/zhuti/img/logo1.jpg" border=0/>


 

好好的双引号硬是给我吃了,莫非你很饿么?
本来用的正则是re = /alt=(["']+)([sS]*?)(1)/i;去匹配出alt的值出来。
结果IE给出的内容就没法匹配,关键是没有双引号,而且alt值有能位任意值,Firefox就没有这个问题。 很是郁闷,有机会让我见者了开发IE浏览器内核的人,我一定丢坨大便给他,估计每个和JavaScript以及各个版本浏览器大交道的同行都有次想法吧:)

最后的解决方式是:加了另外加了个正则

 代码如下
re = /alt=([sS]*?)(>|s>|ssrc|sborder|swidth|sheight|s/>|")/i;

去匹配IE产生的这些非标准内容。

详细代码如下:


//下面取alt值是针对标准浏览器即alt="xxxx"带双引号模式;

 代码如下

re = /alt=(["']+)([sS]*?)(1)/i;

var matches = re.exec(attributes);

if(matches != null) {

var alt = matches[2];

if(alt.length) {

return '[img=' + src + ']' + alt + '[/img]';

}

}

//下面取alt值是针对非标准浏览器比如狗日的IE,即alt=xxxx这种不带双引号模式;

 代码如下

re = /alt=([sS]*?)(>|s>|ssrc|sborder|swidth|sheight|s/>|")/i;

var matches = re.exec(attributes);

if(matches != null) {

var alt = matches[1];

if(alt.length) {

return '[img=' + src + ']' + alt + '[/img]';

}

}

大家如果有什么比较好的方式请一定要告知我哦!!~~

下午更新:
感谢blankyao的提醒,发现前面传过来的attributes最后是没有>符号的
所以正则修改为

 代码如下
re = /alt=([sS]*?)(ssrc|sborder|swidth|sheight|")/i;

精彩图集

赞助商链接