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)
}
展开
 我来答
丁巴什罗大神cy
2019-04-10 · TA获得超过1784个赞
知道小有建树答主
回答量:1525
采纳率:86%
帮助的人:639万
展开全部

用正则很容易就能实现了,我帮你写个:

var str="这里是要操作的字符串";
var reg=/<\/?(?!img)[a-z]+?[^>]*>/gi;
var z=str.replace(reg,""); //这是处理完的结果了

测试结果:

测试地址:在线正则表达式测试

追问
你是把img之外的所有标签全部删掉了!我是想把这几个字打出来。。我昨天搞了一天,弄了递归替换,勉强弄好了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式