测试下这个你就知道了。。<script type="text/javascript">
var FCKRegexLib = {};
FCKRegexLib.ProtectUrlsImgApo = /(<img\s.*?src=)("|')(.+?)\2/gi ;
FCKRegexLib.ProtectUrlsImgNoApo = /(<img\s.*?src=)([^"'][^ >]+)/gi ;var A = "<img src='wc.gif' \/>\n<img src=wc.gif \/>";
A=A.replace(FCKRegexLib.ProtectUrlsImgApo,'$1$2$3$2 _fcksavedurl=$2$3$2');A=A.replace(FCKRegexLib.ProtectUrlsImgNoApo,'$1$2 _fcksavedurl="$2"');
alert(A);
</script>
var FCKRegexLib = {};
FCKRegexLib.ProtectUrlsImgApo = /(<img\s.*?src=)("|')(.+?)\2/gi ;
FCKRegexLib.ProtectUrlsImgNoApo = /(<img\s.*?src=)([^"'][^ >]+)/gi ;var A = "<img src='wc.gif' \/>\n<img src=wc.gif \/>";
A=A.replace(FCKRegexLib.ProtectUrlsImgApo,'$1$2$3$2 _fcksavedurl=$2$3$2');A=A.replace(FCKRegexLib.ProtectUrlsImgNoApo,'$1$2 _fcksavedurl="$2"');
alert(A);
</script>
<script type="text/javascript">
var p = /(<img\s.*?src=)(?:("|')(.+?)\2|([^ >]+))/gi;
var A = "<img src='wc.gif' \/>\n<img src=wc.gif \/>";
A = A.replace(p, "$1\"$3$4\" _fcksavedurl=\"$3$4\"");
alert(A);
</script>
//设置两个正则
FCKRegexLib.ProtectUrlsImgNoApo = /(<img\s.*?src=)([^"'][^ >]+)/gi ;//替换
把<img src="除回车等任意字符"
换成
原字符不变_fcksavedurl="或者'原来的SRC里的内容"或者'
A=A.replace(FCKRegexLib.ProtectUrlsImgApo,'$1$2$3$2 _fcksavedurl=$2$3$2');//第二个和第一个实现相同功能
A=A.replace(FCKRegexLib.ProtectUrlsImgNoApo,'$1$2 _fcksavedurl="$2"');
/(<img\s.*?src=)([^"'][^ >]+)/gi 这个出了问题例如 <img src="http://aaa.jpg" onload="if(aaa>0)...."> 这样有脚本的时候,他会先判断
并从aaa>0 的 >前添加连接,如何能够控制这种情况发生?
var p = /(<img\s.*?src=)(?:("|')(.+?)\2|([^ >]+))/gi;
var A = "<img src='wc.gif' \/>\n<img src=wc.gif \/>\n<img src='http://aaa.jpg' onload='if(aaa>0)....'>";
A = A.replace(p, "$1\"$3$4\" _fcksavedurl=\"$3$4\"");
alert(A);
</script>
有什么问题么?
它不是匹配完整的img标记,只是匹配到内容"?
然后结束并从后面加那个东西。。
今天muxrwc大哥怎么没飘过来?
看看这个
http://community.csdn.net/Expert/TopicView.asp?id=5395523
var FCKRegexLib = {};
FCKRegexLib.ProtectUrlsImgApo = /(<img\s.*?src=)("|')(.+?)\2/gi ;
FCKRegexLib.ProtectUrlsImgNoApo = /(<img\s.*?src=)([^"'][^ >]+)/gi ;var A = '<IMG style=\"WIDTH: 356px; HEIGHT: 315px\" height=517 alt=?看更多精彩?片 src=\"http://photo5.hexun.com/p/2007/0414/89779/b_7362DB2E1960C63AF66A465D2F4122C1.jpg\" width=500 onload=\"var image=new Image();image.src=this.src;if(image.width>0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}\" border=0>';
//var A="<img src='wc.gif' \/>\n<img src=wc.gif \/>";
A=A.replace(FCKRegexLib.ProtectUrlsImgApo,'$1$2$3$2 _fcksavedurl=$2$3$2');A=A.replace(FCKRegexLib.ProtectUrlsImgNoApo,'$1$2 _fcksavedurl="$2"');
alert(A);
</script>没问题呀
做个检验,只要别让这个<在引号里就可以了
因为式子里。只有没引号的情况下才判断的是[^ >],但是没引号的情况下,地址里是不可能有>的,所以按空格匹配,就可以找到src内容结尾的。。所以当匹配到空格的时候整个式子就完整的匹配完一次了。。这样下次匹配还会从式子开头重新匹配。。这样还会跳过其他属性继续匹配img标记。。所以不会出现他说的情况。。
<IMG style="WIDTH: 356px; HEIGHT: 315px" height=517 alt=查看更多精彩图片 src="http://photo5.hexun.com/p/2007/0414/89779/b_7362DB2E1960C63AF66A465D2F4122C1.jpg" width=500 onload="var image=new Image();image.src=this.src;if(image.width>0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" border=0>
</textarea>
<script type="text/javascript" defer="defer">
var p = /(<img\s.*?src=)(?:("|')(.+?)\2|([^ >]+))/gi;
var A = document.getElementById("wc").value;
A = A.replace(p, "$1\"$3$4\" _fcksavedurl=\"$3$4\"");
alert(A);
</script>
:)不过只是上面的需求确实没有必要判断<
src就截止了
嘿,两个式子实现的时候涉及到一个已经替换掉了,然后属性的内容里有src=的若干种形式。。
解决方法。。
<textarea id="wc" style="width:900px;height:500px;">
<IMG style="WIDTH: 356px; HEIGHT: 315px" height=517 alt=查看更多精彩图片 src="http://photo5.hexun.com/p/2007/0414/89779/b_7362DB2E1960C63AF66A465D2F4122C1.jpg" width=500 onload="var image=new Image();image.src=this.src;if(image.width>0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" border=0>
<IMG style="WIDTH: 356px; HEIGHT: 315px" height=517 alt=查看更多精彩图片 src=wc border=0>
<IMG style="WIDTH: 356px; HEIGHT: 315px" height=517 alt=查看更多精彩图片 src=wc BT="var src=window ;this.src='某图片';" border=0>
</textarea>
<script type="text/javascript" defer="defer">
var FCKRegexLib = {};
FCKRegexLib.ProtectUrlsImgApo= /(<img\s(?:"[^"]*"|'[^']*'|[^>'"])*?src=)("|')(.+?)\2/gi ;
FCKRegexLib.ProtectUrlsImgNoApo= /(<img\s(?:"[^"]*"|'[^']*'|[^>'"])*?src=)([^"'][^ >]+)/gi ;
var wc = document.getElementById("wc"), A = wc.value;
A=A.replace(FCKRegexLib.ProtectUrlsImgApo,'$1$2$3$2 _fcksavedurl=$2$3$2');
A=A.replace(FCKRegexLib.ProtectUrlsImgNoApo, '$1$2 _fcksavedurl="$2"');
wc.value = A;
</script>
比如它这样写的呢?<IMG style="WIDTH: 356px; HEIGHT: 315px" height=517 alt=查看更多精彩图片 src=wc BT="var src=window ;this.src='某图片';" border=0>:Dvar src = ....
哈哈,前面有空格吧?