js html标签转化过滤

2016-10-7    分类: JavaScript笔记,前端资源

html特殊标签字符转义

js转化html标签 正则 过滤 危险 特殊 字符

 

//去掉html标签

function removeHtmlTab(tab) {
  return tab.replace(/<[^<>]+?>/g,'');//删除所有HTML标签
}

 

//只删除a标签

function delHtmlTag(str){return str.replace(/(<a .+?>)|(<\/a>)/ig,"");}

 

 

//普通字符转换成转意符

function html2Escape(sHtml) {
  return sHtml.replace(/[<>&"]/g,function(c){return {'<':'&lt;','>':'&gt;','&':'&amp;','"':'&quot;'}[c];});
}

 

//转意符换成普通字符

function escape2Html(str) {
 var arrEntities={'lt':'<','gt':'>','nbsp':' ','amp':'&','quot':'"'};
 return str.replace(/&(lt|gt|nbsp|amp|quot);/ig,function(all,t){return arrEntities[t];});
}

 

// &nbsp;转成空格

function nbsp2Space(str) {
 var arrEntities = {'nbsp' : ' '};
 return str.replace(/&(nbsp);/ig, function(all, t){return arrEntities[t]})
}

 

//回车转为br标签

function return2Br(str) {
 return str.replace(/\r?\n/g,"<br />");
}

 

//去除开头结尾换行,并将连续3次以上换行转换成2次换行

function trimBr(str) {
 str=str.replace(/((\s|&nbsp;)*\r?\n){3,}/g,"\r\n\r\n");//限制最多2次换行
 str=str.replace(/^((\s|&nbsp;)*\r?\n)+/g,'');//清除开头换行
 str=str.replace(/((\s|&nbsp;)*\r?\n)+$/g,'');//清除结尾换行
 return str;
}

 

// 将多个连续空格合并成一个空格

function mergeSpace(str) {
 str=str.replace(/(\s|&nbsp;)+/g,' ');
 return str;
}

 

 

//在一段字符串中过滤筛选出图片的src地址

  // var box=/src=\".*\"/ig;
 var str='<img alt="海底总动员2:多莉去哪儿.Finding.Dory.2016" src="http://p1.bqimg.com/2251/d7f488aa4dceb926s.png" /><br /><img alt="海底总动员2:多莉去哪儿.Finding.Dory.2016" src="http://p1.bqimg.com/2251/236f99bdede0d95fs.png" /><br />';
 //console.log(box.exec(str));



 // var str = "this is test string <img src=\"http:www.yanue.net/test.jpg\" width='50' > 123 and the end <img src=\"所有地址也能匹配.jpg\" /> 33! <img src=\"/uploads/attached/image/20120426/20120426225658_92565.png\" alt=\"\" />"
 //匹配图片(g表示匹配所有结果i表示区分大小写)
 var imgReg = /<img.*?(?:>|\/>)/gi;
 //匹配src属性
 var srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i;
 var arr = str.match(imgReg);
 var pic_arr=[];
 //alert('所有已成功匹配图片的数组:'+arr);
 for (var i = 0; i < arr.length; i++) {
 var src = arr[i].match(srcReg);
 //获取图片地址
 if(src[1]){
 alert('已匹配的图片地址'+(i+1)+':'+src[1]);
 pic_arr[i]=src[1];
 }

// if (src[0]) {
// var t = src[0].replace(/src/i, "href");
// // alert(t);
// pic_arr[i]=t
// }
 }

 console.log(pic_arr);

 

 

//如果输出危险字符就返回true

function stripscript_prompt(s) {
  var pattern = new RegExp("[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]");
  return !!pattern.exec(s);
}

 

 

//直接过滤掉、并返回过滤后的字符串

function stripscript(s) {
 var pattern = new RegExp("[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]");
 var rs = "";
 for (var i = 0; i < s.length; i++) {
   rs = rs + s.substr(i, 1).replace(pattern, '');
 }
 return rs;
}

 

 

//input监听并判断过滤危险字符,配合上面stripscript_prompt(s)、stripscript_prompt(s)

 //input监听、并且过滤
function input_listen(ele) {
    $.data(ele[0],'old',ele.val()); //默认为了一个元素设置了一个临时变量并获取当前值
    ele.bind('input propertychange', function() {
      var old= $.data(ele[0],'old'); //获取临时的值
      var newvalue=$(this).val(); //获取到当前值
      if(old !== newvalue){ //当前值和临时值不一样时
         $.data(ele[0],'old',$(this).val()); //将当前值赋值给临时值,让临时值成为最新的,如果值还是一样时什么都不变
      }
      //console.log(old); //如果临时值变化了,虽然old获取到的是临时值,但old还是保持上一个值不变,因为是传递赋值保持着独立性
      //console.log( stripscript(newvalue)+'<---' );


     if(stripscript_prompt(newvalue)){
       ele.val(stripscript(newvalue));
       console.log(stripscript(newvalue)+'<---危险字符并过滤')
 //管理员帐号验证

     }else{
       ele.val(newvalue);
       console.log(newvalue+'<---没危险')
     }

   });
 }

 

 

http://www.cnblogs.com/leejersey/p/4568092.html