正则表达式的问题,梅花雪请进。

hbhbhbhbhb1021 2005-12-15 10:15:56
<SCRIPT LANGUAGE="JavaScript">
<!--
var StrTxt="...论坛贴子内容...<img src=http://community.csdn.net/images/CSDN_logo.GIF>...>"
var r = /<img[^<>]+src=(\"|\'|)([^\'\"<>]+)\1[^<>]*>/gi
var a = StrTxt.match(r);
if(a)
{
for(var i=0; i<a.length; i++) a[i]=a[i].replace(r, "$2");
}
alert(a);
//-->
</SCRIPT>

这个正则是大梅在以前的帖子中给其他人发的,可以解释下吗?谢谢
...全文
90 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbhbhbhbhb1021 2005-12-15
  • 打赏
  • 举报
回复
明白了,谢谢。
meizz 2005-12-15
  • 打赏
  • 举报
回复
这人正则还是有BUG的,就是少了一个空格的判断,不过我在QQ上直接跟他交流过了,贴子里就没有加回复了。

var StrTxt="...论坛贴子内容...<img src=http://community.csdn.net/images/CSDN_logo.GIF>...>"
var r = /<img[^<>]+src=(\"|\'|)([^\'\"< >]+)\1[^<>]*>/gi;

/<img .... >/gi 这个就不用说了,匹配一个HTML图形标签
src=(\"|\'|)([^\'\"< >]+)\1
这个也没有什么问题吧,匹配<img>里的 src 且判断一下它的属性值两端是否有引号(单引号或者双引号)第二个括号里的内容就是 src 的属性值了, \1 是指正则表达式里的第一个括号的匹配结果,也就是说前面匹配到了单引号,\1也就是指单引号,前面是双号的话 \1 就是双引号,否则这个匹配就不好写了。
[^<>]+ ... [^<>]* 这两个是当<img 与 src="" 之间还有其它信息的时候比如还有 border id 等属性的时候也被匹配进来。

87,902

社区成员

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

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