在项目中,可能有时候需要将一些特殊的东西加一个特别的属性,或者一个特殊的Class。如下:

<!-- 第一种写法 -->
<img src="abc.jpg" fid="13696" alt="abc" /> <!-- 第二种写法 -->
<img src="abc.jpg" class="system_fid_13696" alt="abc" />

很明显,前者不遵循W3C标准。所以,一般情况下我们优先考虑后者。

OK,接下来,我们要在存储页面的时候将所有的图片都替换成[img]13696[/img]这种方式嵌入页面中,用正则表达式完成如下:

var reg =  /<img(?:\s*\w*?\s*=\s*".+?")*?\s*class\s*=\s*".*?system_fid_(\d*).*?"(?:\s*\w*?\s*=\s*".+?")*\s*\/?>/ig;  

var str = '我就是<img class="abc system_fid_1532" src="URL"/>传说中的图片了<img class="abc system_fid_1932 dds" src="URL"/>哎。';
document.write(str.replace(reg,'[img]$1[/img]')+'<br />');

// 输出结果:我就是[img]1532[/img]传说中的图片了[img]1932[/img]哎。

上面正则表达式中,特别要注意的是:  .*?   这个,如果没有后面那个问号,正则表达式的贪婪匹配将会直接找到最后一个  />  字符串进行匹配,最终导致的结果是:

我就是[img]1932[/img]哎。

写这篇文章主要是由于之前项目里面存储文章时,图片时不存图片的绝对路径,只存id然后每次生成页面时根据等号对来生成图片,所以在存文章之前需要对其进行一次编译,希望有类似需求的朋友可以用上。

将具有特殊class名img标签替换成[img][/img]标签--javascript正则表达式实践的更多相关文章

  1. js将一篇文章中多个连续的<br>标签替换成两个连续的<br>标签

    写本文的目的是今天恰好有一个之前做SEO的同事问我怎样把一篇文章中多个连续的br标签替换成两个连续的br标签,这里就牵涉到SEO层面的问题了. 在做SEO优化的时候,其中有一个需要注意的地方就是尽量减 ...

  2. 把router-link标签渲染成指定的标签

    <router-link>标签默认渲染成 <a>标签,可以通过tag属性把router-link渲染成指定的标签,如: <router-link to="/&q ...

  3. 解决UEditor将div标签换成p标签的问题

    原文链接 将设计排版好的页面html代码上传到数据库,再读取出来的时候发现所有的div都被替换成了p标签. 解决方法: 首先在ueditor.all.js文件内搜索allowDivTransToP,找 ...

  4. 帝国cms发布信息时替换正文IMG图片标签里的ALT内容

    帝国cms发布信息时替换正文IMG图片标签里的ALT内容 在 e/class/userfun.php 里面增加 //替换正文IMG里的ALT内容 function user_imgalt($mid,$ ...

  5. xml报文标签替换正则表达式

    写在前面 需求是把所有标签中的信息替换成指定内容 例如: <transName>交易名称</transName><aaa></aaaa><tran ...

  6. dede频道标签channel和频道内容标签channelartlist的调用栏目名的不同方式,如果错误使用标签会发生错误

    频道标签 [field:typename/] 频道内容标签 {dede:field name='typename'/}

  7. HTML中为何p标签内不可包含div标签?那哪些块元素里面不能放哪些块元素呢?

    先看下面的例子你就能明白两者的差别: <p>测试一下块元素与<span>内联元素</span>的差别</p> <p>测试一下<div& ...

  8. 什么是H标签?H1,H2,H3标签?以及和strong标签使用的方法及重要性

    大家都知道,seo的一个很重要的一点就是要把网站做的条理清晰,让搜索引擎很容易的读明白,这个条理清晰不仅体现在网站的物理路径,url等地 方.在<h1><h2><h3&g ...

  9. 如何将自定义标签封装成一个Jar包

    当我们在一个web应用中开发好一些自定义标签的时候,这些自定义标签通常有标签处理器Java类,和一个描述这些标签tld文件,如果我们想在以后别的web工程中还能用上这些标签,可以将这些自定义标签封装在 ...

随机推荐

  1. hadoop3.1 ha高可用部署

    1.资源角色规划

  2. 深入解析当下大热的前后端分离组件django-rest_framework系列三

    三剑客之认证.权限与频率组件 认证组件 局部视图认证 在app01.service.auth.py: class Authentication(BaseAuthentication): def aut ...

  3. hdu 3572(构图+最大流)

    Task Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  4. JQuery 实现 锚点跳转

    $('.nav-jump').click(function() { $('html,body').animate( { scrollTop:$($.attr(this, 'href')).offset ...

  5. 解决报错:Access denied for user 'root'@'xxx' ,MySQL不允许从远程访问的方法 .

    原文地址:传送门 例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话. GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDEN ...

  6. COCOS2D - JS 之JSON 解析

    list 类型的json数据  var source = ["10004","1234","4","3","1 ...

  7. qTip2 Events详细说明

    绑定事件: 这个API触发一些特殊的事件(以下详细信息),允许你给qTip分配多个时间监听,和为某一事件做出响应,例如: 我们绑定一个事件句柄,它将侦听qTip的移动的事件,和更新DIV元素里面显示的 ...

  8. 2018 ACM-ICPC 青岛网络赛

    最近打比赛不知道为什么总是怀疑自己 写完之后不敢交,一定跟学长说一遍自己的思路 然后发现"哦原来我是对的" 然后就A掉了…… 所以还是要有自信 Problem A 最大值直接输出m ...

  9. JSP2 自定义标签

    实现步骤 实现自定义标签的处理类继承javax.servlet.jsp.tagext.SimpleTagSupport,并重写doTag方法 建立标签库配置文件 在jsp中使用自定义标签 一个简单的标 ...

  10. Codeforces Round #307 (Div. 2) E. GukiZ and GukiZiana(分块)

    E. GukiZ and GukiZiana time limit per test 10 seconds memory limit per test 256 megabytes input stan ...