js怎么替换除了img标签外的所有特殊字符
我是希望留言的时候可以粘贴图片,所以img的图片要正常显示,但是输入的其他字符都要显示原字符。所以我需要替换除了img标签之外的所有html特殊字符,还有条件,如果img...
我是希望留言的时候可以粘贴图片,所以img的图片要正常显示,但是输入的其他字符都要显示原字符。所以我需要替换除了img标签之外的所有html特殊字符,还有条件,如果img标签没有src属性,也原字符输出。为了安全,除了src,width,height,alt,title之外所有属性一并去除(这些属性也不一定都会有)。还有,因为浏览器中属性名、=、属性值之间都没有空格,并且属性值都加了双引号,所以也只需要考虑这种情况,不满足还是原样输出。
感觉非常麻烦,而且勉强循环匹配出了属性值,可是不知道怎么循环替换,我也没有其他点子……
function f() {
var str = "<div><img width=\"3\" height=\"37\" src=\"9\" / > </div>";
console.log(str)
var patt = new RegExp("(<.*?>)","g");
var result;
function html2Escape(sHtml) {
return sHtml.replace(/[<>&"]/g,function(c){return {'<':'<','>':'>','&':'&','"':'"'}[c];});
}
str=html2Escape(str);
while ((result = patt.exec(str)) != null) {
// if(result[1].indexOf("<img")!==0 || result[1].indexOf("src=")===-1 )continue;
// result[1].substr(result[1].indexOf("=")+1,6)!=='"'
var n=0;
while(result[1].indexOf('=',n) !== -1){
var m=result[1].indexOf('=',n);
n=m+1;
if( result[1].substr(n,6)!==""")return;
}
console.log(result)
var attributePattern=/([\w-]*="(.*?)"\s*)/g;
while ((attributeResult = attributePattern.exec(result[1])) != null)
console.log(attributeResult)
} 展开
感觉非常麻烦,而且勉强循环匹配出了属性值,可是不知道怎么循环替换,我也没有其他点子……
function f() {
var str = "<div><img width=\"3\" height=\"37\" src=\"9\" / > </div>";
console.log(str)
var patt = new RegExp("(<.*?>)","g");
var result;
function html2Escape(sHtml) {
return sHtml.replace(/[<>&"]/g,function(c){return {'<':'<','>':'>','&':'&','"':'"'}[c];});
}
str=html2Escape(str);
while ((result = patt.exec(str)) != null) {
// if(result[1].indexOf("<img")!==0 || result[1].indexOf("src=")===-1 )continue;
// result[1].substr(result[1].indexOf("=")+1,6)!=='"'
var n=0;
while(result[1].indexOf('=',n) !== -1){
var m=result[1].indexOf('=',n);
n=m+1;
if( result[1].substr(n,6)!==""")return;
}
console.log(result)
var attributePattern=/([\w-]*="(.*?)"\s*)/g;
while ((attributeResult = attributePattern.exec(result[1])) != null)
console.log(attributeResult)
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询