js正则 - 转换源代码中的标签

2008-12-11 09:09:18 | 【

JavaScript正则表达式把代码中的HTML标签img转换为[img]url[/img]。

/<img(?:\s*\w*?\s*=\s*".+?")*?\s*src\s*=\s*"(.+?)"(?:\s*\w*?\s*=\s*".+?")*\s*>/ig 


这段正则和匹配链接标签的正则基本一样,修改如下,标签名img,没有结束标签而是>结束。

测试代码如下:

 <script type="text/javascript"> 
 function replaceReg(reg,str){ 
  return str.replace(reg,'') 
 } 
 var reg = 
/<img(?:\s*\w*?\s*=\s*".+?")*?\s*src\s*=\s*"(.+?)"(?:\s*\w*?\s*=\s*".+?")*\s*>/ig; 
 var str = '我就是传说中的图片了<img src="URL">哎。'; 
 document.write(replaceReg(reg,str)+'<br />'); 
 </script> 


第二个是替换object代码嵌入的flash代码替换为[swf]url[/swf]。

针对原文的正则如下:

 /<object[\s\S]*?src=([\s\S]+?)(?=\s)[\s\S]*<\/object>/i 


如果是所有的属性都有双引号的话正则也需要修改。

测试如下:

 <script type="text/javascript"> 
 function replaceReg(reg,str){ 
  return str.replace(reg,'[swf]$1[/swf]') 
 } 
 var reg = /<object[\s\S]*?src=([\s\S]+?)(?=\s)[\s\S]*<\/object>/i; 
 var str = '<object classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 \
codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/\
swflash.cab#version=5,0,0,0 width=255 height=250><param name=movie \
value=url><param name=quality value=high><embed src=url quality=high \
pluginspage=http://www.macromedia.com/shockwave/download/index.cgi?\
P1_Prod_Version=ShockwaveFlash type=application/x-shockwave-flash \
width=255 height=250></embed></object>'; 
 document.write(replaceReg(reg,str)+'<br />'); 
 </script> 

相关资源