在项目中,可能有时候需要将一些特殊的东西加一个特别的属性,或者一个特殊的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. POJ 1733 Parity game(带权并查集)

    题目链接:http://poj.org/problem?id=1733 题目大意:给你m条信息,每条信息告诉你区间l~r的1的个数是奇数还是偶数,如果后面出现信息跟前面矛盾则这条信息是错误的,问在第一 ...

  2. [Android] 按钮单击事件的五种写法

    在平时学习安卓的过程中,不论是看视频还是看博客,我发现每个人对代码的写法都有不同的偏好,比较明显的就是对控件响应事件的写法的不同.所以我想把这些写法总结一下,比较下各种写法的优劣,希望可以让自己可以灵 ...

  3. AC日记——[SDOI2011]消耗战 洛谷 P2495

    [SDOI2011]消耗战 思路: 建虚树走树形dp: 代码: #include <bits/stdc++.h> using namespace std; #define INF 1e17 ...

  4. Javascript备忘录-枚举一个对象的所有属

    for...in 循环 var obj = { age: 18, fname: "Rand ", lname: "McKinnon" }; function s ...

  5. Vue生命周期总结

    查看生命周期图 <!DOCTYPE html> <html> <head> <title></title> <meta http-eq ...

  6. php smtp发送邮件功能

    <?php header("Content-Type: text/html; charset=utf-8"); class smtp { /* Public Variable ...

  7. ESLint 使用入门

    在团队协作中,为避免低级 Bug.产出风格统一的代码,会预先制定编码规范.使用 Lint 工具和代码风格检测工具,则可以辅助编码规范执行,有效控制代码质量. 在以前的项目中,我们选择 JSHint 和 ...

  8. python之md5模块

    python的md5模块使用非常简单,包括以下几个函数: md5.new([arg]) 返回一个md5对象,如果给出参数,则相当于调用了update(arg) md5.updte(arg) 用stri ...

  9. (5) go 控制台输入输出、进制转换、原反补码、位运算

    一.控制台接受输入 二.原反补码 三.位运算 四.移位运算

  10. HDU 6107 Typesetting (倍增)

    Typesetting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...