`
wktong
  • 浏览: 54354 次
社区版块
存档分类
最新评论

JS使用replace全局&忽略大小写替换CSS样式标签

阅读更多

项目要求,对ckEditor编辑器做了一个全局高亮/取消高亮指定文字的功能,主要是为了兼容了IE。

以下是取消高亮功能的实现。

 

源字段及可视化效果:

<p>
 没<span style="background-color: rgb(255,155,0)">的</span></p>
<p>
 ab非<span style="background-color: rgb(255,155,0)">的</span></p>
<p>
 AB破洞<span style="background-color: rgb(255,155,0)">的</span></p>


 

 

替换后字段及可视化效果:

<p>
 没的</p>
<p>
 ab非的</p>
<p>
 AB破洞的</p>


 

 

 

实现方法:

 

var keyWord = formPanel.getForm().findField('keyWord').getValue();
if(keyWord != ''){
	//获取编辑器上的的全部字符
	var ckBody = CKEDITOR.instances["appendixCont"].document.getBody();
	var allText = ckBody.getHtml()
	//先把BACKGROUND-COLOR: rgb(255,155,0)替换为空
	//第一次替换后剩余的样式即为<SPAN style="">***</SPAN>
	allText = allText.replace(/BACKGROUND-COLOR:\s*rgb\(255,155,0\)/ig, "");
	var regText = '<SPAN style="">' + keyWord + '</SPAN>';
	var regS = new RegExp(regText, "gi");
	//再替换剩余的字段
	allText = allText.replace(regS, keyWord);
	//重新把替换后的字符写入编辑器
	ckBody.setHtml(allText, true);
}

 

备注:

 

new RegExp(patternattributes);参数

参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

返回值

一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。

如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

抛出

SyntaxError - 如果 pattern 不是合法的正则表达式,或 attributes 含有 "g"、"i" 和 "m" 之外的字符,抛出该异常。

TypeError - 如果 pattern 是 RegExp 对象,但没有省略 attributes 参数,抛出该异常。

 

  • 大小: 20 KB
  • 大小: 20 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics