问题:
现在要从一个复杂的html代码字符串(包含各种html标签,数字、中文等信息)中找到某一段特别的信息(被一对“|”包裹着),并对他进行加粗、加下滑线处理。
解决思路:
1、用正则匹配“|”出现的次数,处理刚好出现2次的(html字符串中一般不会含有这个字符)
2、使用正则分组,获取“|”之间的内容,并进行替换(添加样式)
代码:
function specialDeal(){ htmlStr = htmlStr.replace(/ /, ''); var reg0 = new RegExp("\|", "g"); var array = htmlStr.match(reg0); //当且仅当出现"|"的次数等于2时,对"|"之间的内容进行加粗、并加下划线 if (array != null && array.size() == 2) { var reg1=new RegExp("([^\|]*)(\|)([^\|]*)(\|)([^\|]*)", "ig"); var result = reg1.exec(htmlStr); if (result) { htmlStr = htmlStr.replace(reg1,result[1] + "<u><b>" + result[3] + "</b></u>" + result[5]); } } return htmlStr; }
正则表达式中/i,/g,/ig,/gi,/m的区别和含义
/i (忽略大小写)
/g (全文查找出现的所有匹配字符)
/m (多行查找)
/gi(全文查找、忽略大小写)
/ig(全文查找、忽略大小写)
知识点大梳理
js正则表达式的编写、js正则常用到的几个方法:match、exec、replace
1、js正则表达
在编写正则的时候,如果使用RegExp对象,js正则表达式写在字符串里面,特别需要注意转义。
Js代码
var reg0=new RegExp("(<span[^>]*(Courier New)[^>]*>)(\w*)", "ig");
等价于:
var reg0=/(<span[^>]+Courier New[^>]+>)(w*)/ig;