将具有特殊class名img标签替换成[img][/img]标签--javascript正则表达式实践
在项目中,可能有时候需要将一些特殊的东西加一个特别的属性,或者一个特殊的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正则表达式实践的更多相关文章
- js将一篇文章中多个连续的<br>标签替换成两个连续的<br>标签
写本文的目的是今天恰好有一个之前做SEO的同事问我怎样把一篇文章中多个连续的br标签替换成两个连续的br标签,这里就牵涉到SEO层面的问题了. 在做SEO优化的时候,其中有一个需要注意的地方就是尽量减 ...
- 把router-link标签渲染成指定的标签
<router-link>标签默认渲染成 <a>标签,可以通过tag属性把router-link渲染成指定的标签,如: <router-link to="/&q ...
- 解决UEditor将div标签换成p标签的问题
原文链接 将设计排版好的页面html代码上传到数据库,再读取出来的时候发现所有的div都被替换成了p标签. 解决方法: 首先在ueditor.all.js文件内搜索allowDivTransToP,找 ...
- 帝国cms发布信息时替换正文IMG图片标签里的ALT内容
帝国cms发布信息时替换正文IMG图片标签里的ALT内容 在 e/class/userfun.php 里面增加 //替换正文IMG里的ALT内容 function user_imgalt($mid,$ ...
- xml报文标签替换正则表达式
写在前面 需求是把所有标签中的信息替换成指定内容 例如: <transName>交易名称</transName><aaa></aaaa><tran ...
- dede频道标签channel和频道内容标签channelartlist的调用栏目名的不同方式,如果错误使用标签会发生错误
频道标签 [field:typename/] 频道内容标签 {dede:field name='typename'/}
- HTML中为何p标签内不可包含div标签?那哪些块元素里面不能放哪些块元素呢?
先看下面的例子你就能明白两者的差别: <p>测试一下块元素与<span>内联元素</span>的差别</p> <p>测试一下<div& ...
- 什么是H标签?H1,H2,H3标签?以及和strong标签使用的方法及重要性
大家都知道,seo的一个很重要的一点就是要把网站做的条理清晰,让搜索引擎很容易的读明白,这个条理清晰不仅体现在网站的物理路径,url等地 方.在<h1><h2><h3&g ...
- 如何将自定义标签封装成一个Jar包
当我们在一个web应用中开发好一些自定义标签的时候,这些自定义标签通常有标签处理器Java类,和一个描述这些标签tld文件,如果我们想在以后别的web工程中还能用上这些标签,可以将这些自定义标签封装在 ...
随机推荐
- POJ 1733 Parity game(带权并查集)
题目链接:http://poj.org/problem?id=1733 题目大意:给你m条信息,每条信息告诉你区间l~r的1的个数是奇数还是偶数,如果后面出现信息跟前面矛盾则这条信息是错误的,问在第一 ...
- [Android] 按钮单击事件的五种写法
在平时学习安卓的过程中,不论是看视频还是看博客,我发现每个人对代码的写法都有不同的偏好,比较明显的就是对控件响应事件的写法的不同.所以我想把这些写法总结一下,比较下各种写法的优劣,希望可以让自己可以灵 ...
- AC日记——[SDOI2011]消耗战 洛谷 P2495
[SDOI2011]消耗战 思路: 建虚树走树形dp: 代码: #include <bits/stdc++.h> using namespace std; #define INF 1e17 ...
- Javascript备忘录-枚举一个对象的所有属
for...in 循环 var obj = { age: 18, fname: "Rand ", lname: "McKinnon" }; function s ...
- Vue生命周期总结
查看生命周期图 <!DOCTYPE html> <html> <head> <title></title> <meta http-eq ...
- php smtp发送邮件功能
<?php header("Content-Type: text/html; charset=utf-8"); class smtp { /* Public Variable ...
- ESLint 使用入门
在团队协作中,为避免低级 Bug.产出风格统一的代码,会预先制定编码规范.使用 Lint 工具和代码风格检测工具,则可以辅助编码规范执行,有效控制代码质量. 在以前的项目中,我们选择 JSHint 和 ...
- python之md5模块
python的md5模块使用非常简单,包括以下几个函数: md5.new([arg]) 返回一个md5对象,如果给出参数,则相当于调用了update(arg) md5.updte(arg) 用stri ...
- (5) go 控制台输入输出、进制转换、原反补码、位运算
一.控制台接受输入 二.原反补码 三.位运算 四.移位运算
- HDU 6107 Typesetting (倍增)
Typesetting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...