【正则表达式】正则表达式处理图片地址、img标签的方法

再上传表情或者图片地址时候很多时候不能直接上传<img src=" " />,因此在上传评论或者图片之前应该先处理一下img标签。举例如下,希望可以帮助更多的程序猿~

//第一步是获取到带有img标签的字符串
var str = '图片1<img src="arclist/sanai.png">图片2<img src="arclist/em_23.gif">图片3<img src="arclist/451.gif">';

处理获取到的字符串

//将img标签替换为特定编码方式的表达式
var reg = /<img[^>]*src[=\"\'\s]+[^\.]*\/([^\.]+)\.[^\"\']+[\"\']?[^>]*>/gi;
str = str.replace(reg, "[face:$1.gif]");
console.log(str);
运算结果为:

图片1[face:sanai.gif]图片2[face:em_23.gif]图片3[face:451.gif]
这样上传到服务器的代码就不会存在html标签,这是一种很好的应对带有图片评论且上传信息禁止html标签的方法。

接下来:

从服务器上返回的上一步中的运行结果,在反向解析,方法如下:

//将特定编码方式替换成img标签的表达式
var regg = /\[face:([\w]+).gif\]/gi;
str = str.replace(regg,"<img src='images/$1.gif' />");
console.log(str);
运行结果为:

图片1<img src='images/sanai.gif' />图片2<img src='images/em_23.gif' />图片3<img src='images/451.gif' />

下面附上代码的html页,可以全部复制粘贴到html文件中直接运行,亲测可用

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
  </head>
  <body>
    <script>
      var str = '图片1<img src="arclist/sanai.png">图片2<img src="arclist/em_23.gif">图片3<img src="arclist/451.gif">';
      //将img标签替换为特定编码方式的表达式
      var reg = /<img[^>]*src[=\"\'\s]+[^\.]*\/([^\.]+)\.[^\"\']+[\"\']?[^>]*>/gi;
      str = str.replace(reg, "[face:$1.gif]");
      console.log(str);
      //将特定编码方式替换成img标签的表达式
      var regg = /\[face:([\w]+).gif\]/gi;
      str = str.replace(regg,"<img src='images/$1.gif' />");
      console.log(str);
    </script>
  </body>
</html>

以上两种方法很好的解决的对img标签的正反运算,第一种方法为之前收集,不记得原作者,如有冒犯可以提出署名。后一种方法为本人自写,存在一定的局限性,欢迎大家讨论~

转载请注明出处,谢谢



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值